在 Cygwin 上编译 GEOS
GEOS (Geometry Engine - Open Source) 是 Java Topology Suite (JTS) 的 C++ 实现,提供大量的几何操作函数。
Cygwin 的官方源中并没有 GEOS 的二进制发行包,所以要在 Cygwin 上使用 GEOS 必须自行编译。
编译的第一步,需要到 GEOS 的官网上下载源代码。
源代码解压后,进入到解压后的目录,使用 Linux 常用的三条命令进行编译安装:
1 | ./configure |
我在编译的过程中,出现如下错误:
1 | libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../include -I../include/geos -I../include -DGEOS_CAPI_VERSION=\"3.5.0-CAPI-1.9.0\" -DGEOS_JTS_PORT=\"1.13.0\" -DGEOS_INLINE -pedantic -Wall -ansi -Wno-long-long -ffloat-store -g -O2 -MT libgeos_c_la-geos_ts_c.lo -MD -MP -MF .deps/libgeos_c_la-geos_ts_c.Tpo -c geos_ts_c.cpp -DDLL_EXPORT -DPIC -o .libs/libgeos_c_la-geos_ts_c.o |
错误提示 vsnprintf()
函数未声明,查询得知此函数出现于 C++11 标准。而上面的编译命令中有 -ansi
,限定了以 C++98 标准进行编译,所以无法找到 vsnprintf()
函数的声明和定义。
解决方案很简单:进入到源代码目录下的 capi 子目录,找到 Makefile 文件,去掉编译命令中的 -ansi
选项。
Author: jingsam
Link: https://jingsam.github.io/2016/01/16/compiling-geos-on-cygwin.html
License: 知识共享署名-非商业性使用 4.0 国际许可协议