前期准备工做:java
1,下载apache-ant-1.9.11工具软件,并解压到D:\gdal\apache-ant-1.9.11目录下,配置环境变量程序员
ANT_HOME=D:\gdal\apache-ant-1.9.11apache
PATH=%PATH%;%ANT_HOME%\binapi
2,下载JDK1.8,用来编译jar和jni的dll。解压到D:\jdk1.8.0_40_b25目录下,配置环境变量eclipse
JAVA_HOME=D:\jdk1.8.0_40_b25工具
PATH=%PATH%;%JAVA_HOME%\binspa
3,下载swigwin-3.0.12,并解压到D:\gdal\swigwin-3.0.12目录下备用。命令行
准备工做作完后,开始编译工做:blog
1,编译geos-3.6.2ip
将下载到的源代码压缩包解压到D:\gdal\geos-3.6.2目录下,打开vs2015的开发人员命令提示框,切换到D:\gdal\geos-3.6.2目录下,而后输入
1 autogen.bat 2 nmake /f makefile.vc
稍等片刻,便可完成。
2,编译proj-4.9.3
将下载的源码压缩包解压到D:\gdal\proj-4.9.3目录下,打开vs2015的开发人员命令提示框,切换到D:\gdal\proj-4.9.3目录下,而后输入
nmake /f makefile.vc install-all
只要你没动任何配置,顺利编译完成后,你会在C:\PROJ找到编译过的可执行文件和dll,以及后期开发备用的头文件和lib文件等。这个目录暂时不用,后面编译完gdal后,要把这个目录下的的bin目录下的全部exe和dll复制到gdal编译后的bin目录下,不然,gdal会提示缺乏dll文件致使没法运行。
3,编译gdal-2.3.0
将下载到的gdal2.3的源码压缩包解压到D:\gdal\gdal-2.3.0目录下,先不要编译,使用Notepad++工具软件打开D:\gdal\gdal-2.3.0这个目录下的nmake.opt文件,
找到GDAL_HOME = "D:\gdal\gdal-2.3.0-rt"这一行,修改为我这样的目录,这个目录要提早建立。这个目录是存放编译完成后全部的可执行文件和dll的地方。
找到“# Uncomment for GEOS support”这句,
将下面的三行代码改为以下:
GEOS_DIR=D:/gdal/geos-3.6.2
GEOS_CFLAGS = -I$(GEOS_DIR)/capi -I$(GEOS_DIR)/include -DHAVE_GEOS
GEOS_LIB = $(GEOS_DIR)/src/geos_c_i.lib
而后找到# PROJ stuff这一行
将下面的代码修改为以下:
# for proj 4.x:
PROJ_FLAGS = -DPROJ_STATIC -DPROJ_VERSION=4
PROJ_INCLUDE = -ID:\gdal\proj-4.9.3\src
PROJ_LIBRARY = D:\gdal\proj-4.9.3\src\proj_i.lib
找到SWIG=swig.exe这一句,假如没有将swig的目录添加到环境变量中,那么将这句后面的swig.exe修改成swig.exe的全路径,如上面准备工做的第三步的目录D:\gdal\swigwin-3.0.12\swig.exe。若是设置了环境变量,那么就不须要进行修改了。
而后紧挨着下面几行代码,设置java的路径和java的include头文件的,修改为我以下的样子
# SWIG Java settings
!IFNDEF JAVA_HOME
JAVA_HOME = D:\jdk1.8.0_40_b25
!ENDIF
!IFNDEF ANT_HOME
ANT_HOME=D:\gdal\apache-ant-1.9.11
!ENDIF
JAVADOC=$(JAVA_HOME)\bin\javadoc
JAVAC=$(JAVA_HOME)\bin\javac
JAVA=$(JAVA_HOME)\bin\java
JAR=$(JAVA_HOME)\bin\jar
JAVA_INCLUDE=-I$(JAVA_HOME)\include -I$(JAVA_HOME)\include\win32
最后,别忘了保存。
作完以上准备工做,就能够开始编译了,打开vs2015的开发人员命令提示框,切换到D:\gdal\gdal-2.3.0目录下,而后依次执行以下命令:
1 nmake -f makefile.vc 2 nmake -f makefile.vc install 3 nmake -f makefile.vc devinstall
第一步会等待大约20分钟到30分钟,等待完成后,执行第二,和第三个命令,你会在D:\gdal\gdal-2.3.0-rt这个目录下,找到全部编译过的可执行文件和dll文件,包括支持二次开发的头文件和lib文件。
还记得编译proj的时候,会在C:\PROJ目录下生成编译后的文件吗?到C:\PROJ\bin目录下,将该目录下全部文件复制到D:\gdal\gdal-2.3.0-rt\bin目录下,如今,你会发现全部gdal的工具软件均可以运行了。
四、编译java使用的gdal.jar
这一步是为java程序员编译gdal.jar和须要使用到的jni的dll文件的。方便在java环境下使用gdal全部功能。
若是你严格按照我前面的步骤进行,到这里就简单了,仍是打开打开vs2015的开发人员命令提示框,切换到D:\gdal\gdal-2.3.0\swig目录下,而后执行以下命令:
1 nmake /f makefile.vc java
等待完成后,你会在D:\gdal\gdal-2.3.0\swig\java目录下找到gdal.jar文件和gdalalljni.dll文件。
这里有个变化,我以前在编译gdal2.2.3的时候,会生成以下几个文件
到了gdal2.3,就把那4个dll都合并到一个dll文件里了。
最后将 gdal.jar文件和gdalalljni.dll文件也复制到D:\gdal\gdal-2.3.0-rt\bin目录下。
如何在java里使用。用eclipse新建一个java项目,在lib中进入gdal.jar文件,注意,我编译这个jar的时候使用的是jdk1.8,全部新建工程也要使用jdk1.8。而后一路下一步。完成后,选择编译配置,
这里是我mac上的环境配置,若是在win下,你要把这个里改为D:\gdal\gdal-2.3.0-rt\bin目录。而后就可使用java代码作gdal的二次开发了。
后记:
若是须要编译64位的dll和jni的dll,须要启用vs2015的64位编译命令行
从开始菜单打开“VS2015 x64 本机工具命令提示符”工具
而后编译geos库的时候,要传递一个WIN64=YES的参数
编译proj的时候,不用传递任何参数,proj代码会自动判断当前编译环境。
编译gdal的时候,必定要在nmake.opt文件里将
#WIN64=YES前面的注释去掉,而后就是等编译结束就好了。