库各自是什么请百科,或看官网。
以下下载的版本和配置基于windows7 32bit+vs2010,windows+vs平台下其他的大同小异,别的操作系统的话参考大神李民录博客
GDAL源码剖析(二)之编译说明
GDAL源码剖析(八)之编译GEOS和PROJ4库
本文算是是以上两篇博客在windows7 32bit+vs2010平台下的一个归纳总结
另外,这些GDAL的依赖库的安装,你也可以不全部装,想装哪个就下哪个,编译哪个,GDAL中的便已配置文件nmake.opt就改对应的地方,详细看下面。
1、GDAL源代码下载地址:
ftp://ftp.remotesensing.org/gdal,http://download.osgeo.org/gdal/,(官网:http://www.gdal.org/)
2、GEOS源代码下载地址:
官网下download标签点击一个直接下载,(官网:http://trac.osgeo.org/geos/)
3、PROJ4源代码下载地址:
官网下download标签下source code下点击直接下载,(官网:http://trac.osgeo.org/proj/)
4、HDF4\HDF5!编译过!下载地址:
HDF4.2.6:http://www.hdfgroup.org/ftp/HDF/releases/HDF4.2.6/bin/windows/,
HDF1.8.7:http://www.hdfgroup.org/ftp/HDF5/releases/hdf5-1.8.7/bin/windows/,
均点选有win x86(需要64位的选win x64)字样的那个下载,推荐下载这两个版本,更高版本的文件结构改变,后面的配置会不一样哦。。。差那么一点版本也无所谓啦。
下载完了之后解压的地址:
GDAL的可以随便放,GEOS和PROJ4的源码在后面配置GDAL的编译时需要用到的,最好规划好地方,不然电脑文件夹很乱。HDF是编译过的,也最好规划好。
那我是这样放的:
GDAL源码地址:E:\STUDY\学习\GDAL
然后在D盘新建一个文件夹GDAL用来存放编译后的GDAL,里面才建一个supportlibs文件夹存放依赖库
GEOS源码地址:D:\GDAL\supportlibs\geos-3.4.2
PROJ4源码地址:D:\GDAL\supportlibs\proj-4.8.0
HDF4地址:D:\GDAL\supportlibs\HDF4.2.6_win_x86
HDF5地址:D:\GDAL\supportlibs\HDF5-1.8.7_win_x86
1、打开vs2010命令行工具
开始菜单->所有程序->Microsoft Visual Studio 2010->VisualStudio Tools->Visual Studio命令提示(2010),右键管理员打开
2、在这个命令提示工具中进入之前源码存放的位置
方法:以D:\GDAL\supportlibs\geos-3.4.2为例,首先输入D:回车,然后输入cd D:\GDAL\supportlibs\geos-3.4.2回车
编译GEOS和PROJ4要分别进入各自的源代码文件夹,这里只是放在一起讲
3、编译
GEOS:进入源代码目录后,首先输入autogen.bat回车,然后输入nmake /f makefile.vc src_dir回车
PROJ4:进入源代码目录后,直接输入nmake /f makefile.vc install-all回车
1、修改编译配置文件nmake.opt(看着很多代码,其实只要细心很简单,关键要细心)
首先修改编译后GDAL存放路径的配置,修改nmake.opt文件中的54行左右,改为你想要存放的地址,代码如下:
GDAL_HOME= "D:\GDAL"
以下内容参考GDAL源码剖析(二)之编译说明
主要是将之前哪些库的相关路径写到GDAL的编译配置文件nmake.opt中去
1)、集成HDF数据读取
修改nmake.opt文件中的330行左右,代码如下:
#Uncomment thefollowing and update to enable NCSA HDF Release 4 support.
#HDF4_PLUGIN= NO
#HDF4_DIR= D:\warmerda\HDF41r5
#HDF4_LIB= /LIBPATH:$(HDF4_DIR)\lib Ws2_32.lib
#Uncomment thefollowing and update to enable NCSA HDF Release 5 support.
#HDF5_PLUGIN= NO
#HDF5_DIR= c:\warmerda\supportlibs\hdf5\5-164-win
#HDF5_LIB= $(HDF5_DIR)\dll\hdf5dll.lib
修改为下面的代码:
#Uncomment thefollowing and update to enable NCSA HDF Release 4 support.
HDF4_PLUGIN= NO
HDF4_DIR = D:\GDAL\supportlibs\HDF4.2.6_win_x86
HDF4_LIB = $(HDF4_DIR)\dll\hd426m.lib $(HDF4_DIR)\dll\hm426m.lib \
$(HDF4_DIR)\lib\hd426.lib $(HDF4_DIR)\lib\hm426.lib Ws2_32.lib
# Uncomment the following and update to enable NCSA HDF Release 5 support.
HDF5_PLUGIN = NO
HDF5_DIR = D:\GDAL\supportlibs\HDF5-1.8.7_win_x86
HDF5_LIB = $(HDF5_DIR)\dll\hdf5dll.lib
对比代码如下图:(路径以上面为准)
保存。
2)、集成Proj4
同GEOS库的配置方法,在nmake.opt文件中,找到proj4库的位置,大概在352行左右。将下面的三行代码:
#PROJ_FLAGS=-DPROJ_STATIC
#PROJ_INCLUDE=-Id:\projects\proj.4\src
#PROJ_LIBRARY=d:\projects\proj.4\src\proj_i.lib
修改为:
#PROJ_FLAGS=-DPROJ_STATIC
PROJ_INCLUDE= -ID:\GDAL\supportlibs\proj-4.8.0\src
PROJ_LIBRARY = D:\GDAL\supportlibs\proj-4.8.0\src\proj_i.lib
其中第一行表示是否使用静态链接的方式,第二行的路径表示,proj库存放的位置,第三行为proj库的lib文件所在路径。修改后保存即可,对比结果如下图如下:(路径以上面为准)
保存。
3)、集成GEOS
首先使用记事本或者其他的文本编辑器打开GDAL源代码目录下的nmake.opt文件,找到“# Uncomment for GEOS support”这句,大概在405行左右,将下面三行代码:
#GEOS_DIR=C:/warmerda/geos
#GEOS_CFLAGS=-I$(GEOS_DIR)/capi -I$(GEOS_DIR)/source/headers -DHAVE_GEOS
#GEOS_LIB =$(GEOS_DIR)/source/geos_c_i.lib
修改为:
GEOS_DIR=D:\GDAL\supportlibs\geos-3.4.2
GEOS_CFLAGS = -I$(GEOS_DIR)/capi -I$(GEOS_DIR)/include -DHAVE_GEOS
GEOS_LIB = $(GEOS_DIR)/src/geos_c_i.lib
对比结果如下图如下:(路径以上面为准)
编译后的GDAL就将会支持图形之间的操作等处理。函数主要是在OGR库中。保存
2、编译GDAL
1)、打开vs2010命令行工具
开始菜单->所有程序->Microsoft Visual Studio 2010->VisualStudio Tools->Visual Studio命令提示(2010),右键管理员打开
2)、在这个命令提示工具中进入之前GDAL源码存放的位置
方法:以E:\STUDY\学习\GDAL\gdal1100\gdal-1.10.0为例,首先输入D:回车,然后输入cd E:\STUDY\学习\GDAL\gdal1100\gdal-1.10.0回车
3)、编译
首先输入nmake /f makefile.vc回车
然后输入nmake /f makefile.vc install回车
最后输入nmake /f makefile.vc devinstall回车
等待编译完成!
3)、拷贝GEOS+PROJ4+HDF的dll文件到GDAL目录
编译后,记得将hdf库中的dll文件夹下的dll文件、PROJ4库源代码src文件夹下的dll文件proj.dll、GEOS库文件夹下src文件夹中geos_c.dll文件,都拷贝到GDAL编译后存放的目录下的bin文件夹中gdal18.dll的同级目录下,否则会提示你找不到proj.dll、geos_c.dll文件。
使用cmd命令行编译,首先在“开始菜单\所有程序\Microsoft Visual Studio 2008\Visual Studio Tools\ Visual Studio 2008命令提示”,点击“Visual Studio 2008 命令提示”会弹出下面的界面:
然后使用cd命令,切换到GDAL的源代码目录,如下图所示:
切换到GDAL的源代码目录后,依次敲入下面的命令行后回车,等待编译结束即可。
nmake -f makefile.vc
nmake -f makefile.vc install
nmake -f makefile.vc devinstall
同时还有其他的命令,如:
nmake -f makefile.vc clean
nmake -f makefile.vc MSVC_VER=1400clean
nmake -f makefile.vc MSVC_VER=1400DEBUG=1
上面六行的命令含义依次是:
编译GDAL库
编译GDAL库,并安装(这里安装的意思就是将生成的dll,exe等文件拷贝到C:\warmerda\bld目录),
编译GDAL库,并安装开发者模式(安装的意思同上,开发者模式意思是将开发用的include文件夹中的头文件和lib文件一同拷贝到C:\warmerda\bld目录,此时会在C:\warmerda\bld目录中多出来两个文件夹,分别是include和lib,分别存放的是GDAL的头文件和lib文件,用于调用GDAL库使用)。
清理GDAL库,同时会删除编译GDAL库所生成的临时文件,作用相当于在VS环境中的清理命令。
作用同上,但是添加了一个MSVC_VER=1400,表示使用VS2005编译。
编译GDAL库的debug模式,可以用来调试GDAL源码。
对于使用cmd命令行编译,基本同本文开始,不一样的只有,在开始菜单选择的不是“Visual Studio 2008 命令提示”而是“Visual Studio 2008 x64 兼容工具命令提示”,剩下的编译步骤跟前面的一样。
在编译开始之前,还需要打开nmake.opt文件,找到131行处的“#WIN64=YES”,将前面的“#”去掉,保存,然后开始编译。
如果出现错误:
LINK : error LNK2001: unresolved external symbol >_OCTNewCoordinateTransformation at 8
LINK : error LNK2001: unresolved external symbol _vbSafeArrayToPtr at16
LINK : error LNK2001: unresolved external symbol _GDALDitherRGB2PCT at 28
LINK : error LNK2001: unresolved external symbol > >_GDALComputeMedianCutPCT at 32
LINK : error LNK2001: unresolved external symbol _GDALReprojectImage at 48
LINK : error LNK2001: unresolved external symbol _GDALSimpleImageWarp at36
LINK : error LNK2001: unresolved external symbol _OGRRegisterAll
LINK : error LNK2001: unresolved external symbol _OGR_G_GetPointCount
LINK : error LNK2001: unresolved external symbol _OPTGetProjectionMethods
LINK : error LNK2001: unresolved external symbol _OSRValidate
LINK : error LNK2001: unresolved external symbol_OGRFeatureStylePuller
那么需要按照下面的
步骤进行一点点设置。
1:在GDAL目录下的nmake.opt文件中,找到SYM_PREFIX的定义,应该在438行左右
将SYM_PREFIX=_ 改为SYM_PREFIX= 就是将最后的下划线去掉
2:在GDAL目录下的makefile.vc文件中,找到46行左右的代码,如下:
BASE_INCLUDE =/INCLUDE:_GDALSimpleImageWarp@36
/INCLUDE:_GDALReprojectImage@48
/INCLUDE:_GDALComputeMedianCutPCT@32
/INCLUDE:_GDALDitherRGB2PCT@28
/INCLUDE:_OCTNewCoordinateTransformation@8 ( V B 6 S A F E A R R A Y S Y M ) 修 改 为 : B A S E I N C L U D E = / I N C L U D E : (VB6_SAFEARRAYSYM) 修改为: BASE_INCLUDE =/INCLUDE: (VB6SAFEARRAYSYM)修改为:BASEINCLUDE=/INCLUDE:(SYM_PREFIX)GDALSimpleImageWarp
/INCLUDE:KaTeX parse error: Undefined control sequence: \ at position 32: …ReprojectImage \̲ ̲ /INCLUDE:(SYM_PREFIX)GDALComputeMedianCutPCT
/INCLUDE:KaTeX parse error: Undefined control sequence: \ at position 31: …LDitherRGB2PCT \̲ ̲/INCLUDE:(SYM_PREFIX)OCTNewCoordinateTransformation $(VB6_SAFEARRAYSYM)
就是将后面的@开始,后面的数字删除。现在开始编译吧
使用nmake编译geos库的时候需要注意的是在nmake.opt文件中需要自己看一下自己nmake.exe的版本,我的vs2017 x64 Native Tools Command Prompt 2017版本号不在nmake.opt文件中,所以在执行命令nmake -f makefile.vc的时候会报错Cannot determine Visual C++ version:
备注:MSVC_VER=1910(根据编译器来确定。1400是指 VS 版本为2010,1800是指 VS 版本为2013,1900是指 VS 版本为2015,1910是指 VS 版本为2017,1920是指 VS 版本为2019)
解决办法就是在nmake.opt文件中加入当前nmake的版本号:
这样编译就可以通过了,默认得版本是Realease,最后会输出geos.lib,geos_d.lib,geos_i.lib,geos_i_d.lib,geos_c_i.lib,geos_c_i_d.lib,geos.dll,geos_d.dll,geos_c.dll,geos_c_d.dll,一般我们使用geos_c_i.lib与geos_c.dll。
ttps://blog.csdn.net/sx341125/article/details/100052400
打开vs2017,新建一个 c++ 空项目。然后通过视图->其他窗口->属性管理器,打开属性管理器。
在VC++目录依次添加包含目录、库目录:
包含目录:F:\GDAL\include
库目录:F:\GDAL\lib
再在链接器->输入添加附加依赖项,手动输入gdal_i.lib
设置环境变量
依次点击计算机->属性->高级系统设置->环境变量->系统变量内的 path
F:\GDAL\bin
备注:所依赖的.dll文件都需要放到”F:\GDAL\bin“ 目录下。
VS2017编译配置GDAL——超详细,适合初学者!!!
GDAL源码剖析
VS2017编译gdal-2.4.2与geos-3.7.2