GDAL 编译那些事

前言

        学习GDAL,学会自己编译GDAL是非常必要的。

1:默认GDAL编译

1.1 源码下载

不管是采用nmake方式还是工程方式,都需要先下载源码,然后进行才能开始编译。

进入GDAL官网:https://www.gdal.org/ 如下:

 

解压之后源码文件如下所示:

1.2 直接下载别人编译好的

直接下载别人编译好的比较方便,但是这些编译基本都是默认编译(比方说,对postgis,mysql这些数据库类型的驱动都是不支持的,如果要用到这些,还是需要自己编译的,到底是直接下载别人编译好的,还是自己编译,根据自己实际情况选择)

 

1.3 编译(nmake)

1.3.1 VS命令提示符

利用VS的命令提示符来完成,我的是VS2015专业版,这里选择64位本机工具命令提示符(因为OS是Win10 64位)

1.3.2 开始编译

         cd 到解压的源码文件夹,依次输入

nmake -f makefile.vc

nmake -f makefile.vc install

nmake –f makefile.vc devinstall

然而很不幸,编译没有通过,出现了下列问题:

不慌,上面的问题应该属于编译64位GDAL时出现的问题,这里提供两种解决方案:

第一种加上WIN64=1,即像下面这样就行:

第二种在源码中打开namke.opt文件,搜索WIN64,找到下面部分,去掉前面#号:

ps:推荐使用第二种,不用每次都带上WIN64=1.

等一段时间编译完成之后,再次输入剩下两条命令:

         nmake -f makefile.vc install

         nmake -f makefile.vc devinstall

1.3.3 编译结果

到此,编译(nmake版)已经成功,在C盘如下目录(C:\warmerda\bld\bin)可以查看到编译结果(源码里面也有编译的结果gdal203.dll,但是其它exe没有):

1.4 编译(工程)

1.4.1 生成VS工程

运行命令提示符,cd到源码文件,执行命令generate_vcxproj.bat 14.0 64 gdal-2.3.1

1.4.2 开始编译

运行gdal-2.3.1.vcxproj,即可打开VS工程,然后直接点击运行即可。

 

2 编译Java版GDAL

GDAL是用C++写的,如果在Java中需要用到GDAL,那么我们就需要编译Java版GDAL。

2.1 编译前准备

2.1.1 准备内容

编译Java版GDAL需要用到以下东西:JRE、SWIG、Ant,JRE当然就不用说了,在安装JDK的时候大家肯定已经配置好了,这里不再赘述。

2.1.2 SWIG

SWIG:http://www.swig.org/download.html 到这里下载解压即可:

然后把swig.exe文件夹所在目录(D:\SoftWare\SWIG\swigwin-3.0.12)添加到环境变量path中:

 测试是否安装成功,cmd中输入swig,如果出现下面情况,则表明成功了:

2.1.3 Ant

         Ant:http://ant.apache.org/ 到这里下载解压即可:

2.1.4 修改namke.opt文件

修改如下内容即可:

修改完成后如下所示:

2.2 开始编译

         编译流程:参考1.3,先编译c++版GDAL(即上面三个nmake命令),编译完成之后,输入命令:

         cd swig (进入到swig文件夹)

         nmake -f makefile.vc java (编译Java版GDAL)

2.3 编译结果

         除了c盘输出文件夹里面的内容外,源码swig\java文件夹里面也多了gdal.jar和gdalalljni.dll等文件(这些文件在GDAL环境搭建的时候会用到,当然还包括之前的gdal203.dll,肯定也是会用到的):

3 编译GDAL支持PostGIS

GDAL不仅支持shp驱动,还支持PostGIS驱动,GDAL支持的矢量驱动可以到这里(https://www.gdal.org/ogr_formats.html)去看,但是默认的编译结果是不支持PostGIS的,需要自己重新编译,下面就详细说明下,如何编译GDAL使其支持PostGIS驱动。

3.1 修改nmake.opt文件

         在该文件中找到PostGIS库,修改包含目录和库目录(到PostGIS安装目录底下去看)

         修改完成后结果如下:

3.2 开始编译

修改完成nmake.opt文件之后,仿照前面编译(nmake版本)的重新进行编译即可(我用的是Java版本的GDAL,所以按照2中步骤即可编译,获取到支持PostGIS的GDAL)。

 

3.3 编译完成

编译完成之后,可以利用depends,打开gdal203.dll可以查看到其中的依赖项中包含libpq.dll,则表明编译成功了。

4 参考文献

https://blog.csdn.net/liminlu0314/article/details/6937194

https://blog.csdn.net/jingmiaa/article/details/78111642

https://blog.csdn.net/liminlu0314/article/details/44701507

https://www.cnblogs.com/lisuyun/p/6410393.html

https://blog.csdn.net/cloverwindy/article/details/8658400

 

转载自:https://blog.csdn.net/qq_24309981/article/details/82831421

You may also like...