在 Cygwin 上编译 GDAL
GDAL (Geospatial Data Abstraction Library) 是最广泛使用的空间数据操作库,包括栅格数据和矢量数据的读写。
Cygwin 的官方源中并没有 GDAL 的二进制发行包,所以要在 Cygwin 上使用 GDAL 必须自行编译。
编译的第一步,需要到 GDAL 的官网上下载源代码。
源代码解压后,进入到解压后的目录,使用 Linux 常用的三条命令进行编译安装:
1 | ./configure |
我在编译的过程中,出现如下错误:
1 | /home/Sam/download/gdal-2.0.1/frmts/o/.libs/dgif_lib.o: In function `DGifOpenFileHandle': |
查询得知,setmode()
函数并不是标准函数库的一部分,它是一个 BSD 函数。使用 setmode()
函数,需要包含以下头文件:
1 |
因此解决方案是:找到 dgif_lib.c 和 egif_lib.c,分别在 setmode()
函数前添加头文件 #include <io.h>
。
更新:在 GDAL 2.0.2 中,编译 gdalserver.c 时会报 fd_set 未定义的错误,解决方法是在该文件的46行下面添加 #include <sys/select.h>
。
更新2:使用坐标系转换需要 proj.4 支持,在 cygwin 平台下,GDAL 默认链接到 cygproj-0.dll
,可能会出现找不到 proj.4 的错误。这时,在 ogr/ogrct.cpp
中将 98 行的 # define LIBNAME "cygproj-0.dll"
改为 # define LIBNAME "cygproj-1.dll"
后,重新编译。
Author: jingsam
Link: https://jingsam.github.io/2016/01/16/compiling-gdal-on-cygwin.html
License: 知识共享署名-非商业性使用 4.0 国际许可协议