环境要求:

Windows64,Go,minGW(统一64位)

1、安装geos

下载GEOS 3.3.8源码,解压后,按readme文件编译(基于VS2010的64位编译工具执行的nmake编译命令)在src目录下得到geos_c.dll,将头文件整理为include文件夹:

geos_c.h

geos

export.h

platform.h

version.h

只需要geos里的三个头文件即可

2、安装gogeos

参考http://paulsmith.github.io/gogeos/安装gogeos

执行go get github.com/paulsmith/gogeos/geos命令,下载源码在build过程中会报错:找不到geos_c.h

解决办法:

在GOPATH下的gogeos源码(D:\work\go\src\github.com\paulsmith\gogeos\geos\coordseq.go)中增加cgo配置如下:

/*

#cgo CFLAGS : -ID:/tool/geos/geosbin/include

#cgo LDFLAGS : -LD:/tool/geos/geosbin/bin

#include "geos.h"

*/

import "C"

……

include为前面geos的头文件,bin为geos_c.dll所在目录

然后重新执行go get github.com/paulsmith/gogeos/geos命令,go包安装成功,在GOPATH下的pkg\windows_amd64\github.com\paulsmith\gogeos文件夹中生成geos.a

总结:LDFLAGS设置的是dll动态连接库的位置,不是lib库,之前一直理解错了,windows上要注意64位和32位的坑,保证版本一致

cgo工具提供了c语言包导出到go中使用的功能,但在使用cgo导入c语言包时,注意设置CFLAGS和LDFLAGS参数,cgo会链接所有的依赖库,导致编译过程耗时较长。

Gogeos安装的更多相关文章

  1. docker——容器安装tomcat

    写在前面: 继续docker的学习,学习了docker的基本常用命令之后,我在docker上安装jdk,tomcat两个基本的java web工具,这里对操作流程记录一下. 软件准备: 1.jdk-7 ...

  2. 网络原因导致 npm 软件包 node-sass / gulp-sass 安装失败的处理办法

    如果你正在构建一个基于 gulp 的前端自动化开发环境,那么极有可能会用到 gulp-sass ,由于网络原因你可能会安装失败,因为安装过程中部分细节会到亚马逊云服务器上获取文件.本文主要讨论在不变更 ...

  3. Sublime Text3安装JsHint

    介绍 Sublime Text3使用jshint依赖Nodejs,SublimeLinter和Sublimelinter-jshint. NodeJs的安装省略. 安装SublimeLinter Su ...

  4. Fabio 安装和简单使用

    Fabio(Go 语言):https://github.com/eBay/fabio Fabio 是一个快速.现代.zero-conf 负载均衡 HTTP(S) 路由器,用于部署 Consul 管理的 ...

  5. gentoo 安装

    加载完光驱后 1进行ping命令查看网络是否通畅 2设置硬盘的标识为GPT(主要用于64位且启动模式为UEFI,还有一个是MBR,主要用于32位且启动模式为bois) parted -a optima ...

  6. Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part3:db安装和升级

    Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part3:db安装和升级 环境:OEL 5.7 + Oracle 10.2.0.5 RAC 5.安装Database软件 5. ...

  7. Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part1:准备工作

    Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part1:准备工作 环境:OEL 5.7 + Oracle 10.2.0.5 RAC 1.实施前准备工作 1.1 服务器安装操 ...

  8. 【原】nodejs全局安装和本地安装的区别

    来微信支付有2年多了,从2年前的互联网模式转变为O2O模式,主要的场景是跟线下的商户去打交道,不像以往的互联网模式,有产品经理提需求,我们帮忙去解决问题. 转型后是这样的,团队成员更多需要去寻找业务的 ...

  9. tLinux 2.2下安装Mono 4.8

    Tlinux2.2发行版基于CentOS 7.2.1511研发而成,内核版本与Tlinux2.0发行版保持完全一致,更加稳定,并保持对Tlinux2.0的完全兼容.Mono 4版本要求CentOS 7 ...

随机推荐

  1. Zabbix监控基础

    1. 安装前准备 setenforce 0 sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config ...

  2. LeetCode_Two Sum

    Given an array of integers, find two numbers such that they add up to a specific target number. The ...

  3. TIOBE 9 月排行榜:C++ 式微,第 3 名被 Python 拿下

    TIOBE 发布了 9 月份的编程语言排行榜,上个月 Python 与第 3 名擦肩而过,而指数稳步上升的它在本月终于打败 C++,成功探花. ​ “人生苦短,我用 Python”,Python 的经 ...

  4. ruamel.yaml 将字典写入yaml文件

    #安装 pip install ruamel.yaml import os from ruamel import yaml # 将字典写入到yaml my_dic = { 'name': '张三', ...

  5. testng的@Factory及其与@DataProvider的区别

    Factory,顾名思意就是工厂,也就是工厂方法,在软件开发中一般结合多态使用,用来根据不同的条件创建不同的类对象. 在这里,Factory一般用来创建一个测试类的多个实例,每个实例属性不同,以执行不 ...

  6. G729 详细使用文档

    https://tools.ietf.org/html/rfc4749 git://git.linphone.org/linphone-android.git http://stackoverflow ...

  7. PHP面试专用笔记精简版

    [PHP笔记] 1.require 遇到即包含文件,require_once 只包含一次.require 遇到错误会终止,一般放在程序的最前面:include遇到错误会继续执行,一般放在流程控制语句中 ...

  8. Linux登录欢迎图案

    命令提示符设置: export PS1='\n\[\e[37;1m[\]\[\e[31;1m\]\u\[\e[39;1m\]@\[\e[33;1m\]\H \[\e[34;1m\]\w\[\e[37; ...

  9. appium 中手势密码的定位坐标

    原文地址http://www.cnblogs.com/smallTestKK/p/5408143.html 1.press方法中的坐标为绝对坐标,moveTO方法中的坐标都是相对坐标,具体来说第一个m ...

  10. Selenium-Grid2 配置RemoteWebDriver

    为什么要使用Selenium Grid ? 分布式运行大规模的Test 能够通过一个中央点,很容易的运行不同OS上的不同browser 最小化对Grid的维护时间,并能充分利用虚拟设备 Seleniu ...