前期準備工做: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前面的註釋去掉,而後就是等編譯結束就好了。