GDAL编译记录(版本2.3.1,使用VS2015+NMAKE)

零零散散耗了快一周时间,终于完成了x64版本的GDAL的编译。耗时太久的原因有二:1第一次使用nmake;2坑太多。

在编译过程遇到的坑实在太多,因此在此记下,希望能够帮助需要的人。

编译环境:Win7 64位系统;VS2015;GDAL2.3.1

编译方法:使用VS2015自带的x64位命令行工具及GDAL源码中的makefile.vc编译。

坑一:一定要用对x64版本的VS2015命令行工具。工具名称为“VS2015 x64本机工具命令提示符”,工具正确的打开方式见我的上一篇记录。

https://blog.csdn.net/ye0915715/article/details/80919930(切记不要使用VS2015 IDE界面中的“visual studio 命令提示”)。(这个坑会导致fatal error LNK1112:模型计算机类型“X86”与目标计算机类型“X64”冲突的问题。)

坑二:注释掉ODBC_SUPPORTED = 1。在GDAL源代码目录下找到nmake.opt,用UE或写字板打开,搜索nmake.opt找到“ODBC_SUPPORTED = 1”这一行后,在前面加上一个“#”注释掉。这样GDAL就不支持ODBC链接数据库了,不过对我目前的使用影响不大。(这个坑也会导致fatal error LNK1112,不过对应的obj文件会发生变化)

2018-7-14 14:42:46注:若注释掉ODBC出现很多与SQL相关函数问题时,可以先取消注释ODBC,直接编译弹出其他错误后,再注释掉ODBC,重新编译。

坑三:在使用“nmake /f makefile.vc WIN64=1”前注意设置nmake编译时使用的cl.exe,link.exe程序路径,编译所需的头文件路径,编译所需要的库文件路径。即需要在命令行工具中使用set命令分别设置INCLUDE、PATH、LIB等变量的值。

其实就是打开VS2015 x64命令行工具,依次输入并运行以下三个命令:

set INCLUDE=C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt;D:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include;D:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\atlmfc\include;C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Include;

set LIB=D:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\lib\amd64;D:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\atlmfc\lib\amd64;C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib\x64;C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10240.0\ucrt\x64

set PATH=D:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\amd64;%PATH%

以上是我的机器上是可以正常编译的,如果设置了还是出现无法找到某个头文件的情况,就去本机VS安装目录找找,找到了就把绝对路径增加到“set INCLUDE=”之后,别忘了末尾加上分号。找不到某某lib也是同样的方法找到增加到LIB变量中。若是发现找不到xcopy等常见命令,则需要在PATH变量加上“%PATH%”(表示将系统环境变量PATH的值增加到现有PATH变量中)。(就是因为找不到“stdio.h”文件,我才加上这个路径C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt。)

因为我们要编译的是x64版本的,所以在查找路径时,一定要注意“amd64”,“x64”之类字样。

对于这一条,其实在nmake.opt文件中“WIN64=YES”上面的注释中,作者明确说了如果编译64位的,需要设置lib,include,path等路径,但作为新手实在不知道怎么增加,查了不少资料,走了不少弯路。

# Uncomment the following if you are building for 64-bit windows
# (x64). You'll need to have PATH, INCLUDE and LIB set up for 64-bit
# compiles.

注意:

1.使用了set XXX命令的环境变量只在本命令行工具中有效,关闭命令行工具,已经设置的INCLUDE、LIB、PATH命令即失效。这也是为啥我没有使用“开始->计算机右键属性->高级系统设置->环境变量->系统变量”设置的原因,在系统变量中永久增加这些额外不常见的路径总感觉不够干净。

2.可以直接使用set命令(后面不带任何参数),可以查看当前命令行所使用的所有环境变量(可以用来确认是否set成功)。

若nmake -f makefile.vc 编译没有错误了,就依次输入并运行以下命令

nmake /f makefile.vc WIN64=1 install 
nmake /f makefile.vc WIN64=1 devinstal 

第一句会在nmake.opt中的设置的“GDAL_HOME = "D:\program\Liblas\gdal-2.3.1"”路径下生成bin文件夹,里面是exe文件。

第二句会在以上路径("D:\program\Liblas\gdal-2.3.1”)下生产include和lib文件夹,里面分别是头文件和lib库。

坑四:若出现某某pdb文件损坏需要删除后再编译的问题提示时,一般会找到对应文件直接删除再编译,但是。。。会有第二个文件损坏。。。第三个。。。,因此明智的方法是使用“nmake -f makefile.vc clean”清理编译环境。 

坑五:在nmake /f makefile.vc WIN64=1, nmake /f makefile.vc WIN64=1 install ,nmake /f makefile.vc WIN64=1 devinstal 

注意一定要加上“WIN64=1”,即使nmake.opt中有“WIN64=YES”设置。

参考文章:

 

成功编译GDAL2.1.1过程总结

https://blog.csdn.net/sinat_32242207/article/details/64444146?locationNum=14&fps=1

 

命令行下使用VC++自带的nmake编译器编译项目

https://blog.csdn.net/lcfeng1982/article/details/15814699

 

每天学习一点点,每天进步一点点

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值