执行go get拉取geos包时提示geos_c.h不存在编译报错如何解决
报错原因
$ go get github.com/paulsmith/gogeos/geos # github.com/paulsmith/gogeos/geos In file included from ../../go/pkg/mod/github.com/paulsmith/gogeos@v0.1.2/geos/coordseq.go:4: ./geos.h:1:10: fatal error: geos_c.h: No such file or directory 1 | #include <geos_c.h> | ^~~~~~~~~~ compilation terminated.
上述错误是因为github.com/paulsmith/gogeos/geos属于GEOS几何引擎的Go绑定,编译依赖系统层面的GEOS C语言开发库,你仅安装了Go语言环境依赖,未安装该系统级依赖导致头文件缺失。
解决步骤
- 第一步:安装对应操作系统的GEOS开发包
Debian/Ubuntu 系列
sudo apt update && sudo apt install libgeos-devRHEL/CentOS/Fedora 系列
sudo dnf install geos-develmacOS(Homebrew环境)
brew install geosWindows(Chocolatey环境)
choco install geos
若Windows未使用Chocolatey,可直接下载GEOS预编译开发包,解压到本地目录备用。 - 第二步:验证GEOS安装状态
执行命令geos-config --version,正常输出版本号即为安装成功。 - 第三步:重新拉取依赖
再次执行go get github.com/paulsmith/gogeos/geos即可完成编译拉取。
异常排查
若安装后仍报错,可检查以下两项配置:
- 确认CGO已开启:执行
go env CGO_ENABLED确认输出为1,若为0执行go env -w CGO_ENABLED=1开启,Windows环境需提前安装MinGW GCC编译套件。 - Windows手动安装GEOS的场景,需要手动指定头文件和库路径执行拉取命令,示例如下:
CGO_CFLAGS="-IC:\geos\include" CGO_LDFLAGS="-LC:\geos\lib" go get github.com/paulsmith/gogeos/geos
请将路径替换为你本地GEOS解压后的对应目录。
内容的提问来源于stack exchange,提问作者leopold servatius
相关产品推荐
相关产品推荐

