GDAL编译过程中的几个问题

2024-09-01 09:18
文章标签 编译 问题 几个 过程 gdal

本文主要是介绍GDAL编译过程中的几个问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

windows下面:

首先是DOS下访问文件(cd命令) 的问题。
今天要去build一个open source,但是安装那个文件要通过DOS窗口。我想进入E:/assignment/gdalOS,然后运行一个叫做makefile.vc的文件。但是我刚开始怎么都进不去这个目录。我是这么用的:cd E:/assignment/gdalOS,但是结果是空了一行,继续显示那个垃圾C:/Documents and Settings/Administrator>,我搜了下,发现原来这个cd 命令只是用于目录之间的转移 ,而这个涉及到盘符之间的进出则要先进入盘符,即:
1.直接在C:/Documents and Settings/Administrator>后面敲 E: 然后回车,下一行出现:E:/> (注意:若是想进入C盘,则要键入cd C:/否则还是会进入c:/document什么什么的默认地方)
2.在E:/>后面敲 cd assignment/gdalOS 然后回车,出现路径:E:/assignment/gdalOS
3.在后面输入想要的命令即可
其次是提示“’nmake’ 不是内部或外部命令,也不是可运行的程序或批处理文件 ”错误。我找了很多东东,搞了今天一下午总算是给搞定了。
原因是VC的环境变量没有设置好。那么到底如何设置才好呢?网络上大多数和它的官方文档(GDAL/OGR开源代码)都说运行上VC安装路径上C:/Program Files/Microsoft Visual Studio 8/VC/bin下的vcvars32.bat就可以了。我发现这个批处理窗口只是一闪而过,也就是说环境变量也只是设置好了立刻就没有了。当我在项目目录路径下输入命令nmake /f makefile.vc的时候还是提示这个错误。于是我就按一个哥们的做法:打开cmd的DOS窗口(这里也可以直接用VS2005自带的Visual Stdio 2005命令提示工具来打开),把VC安装路径上的vcvars32.bat直接拖到该DOS窗口上,然后回车,然后cd进入项目目录下输入命令nmake /f makefile.vc即可了。但是我编译下来发现好多的都无法编译,提示无法解析的错误,我猜想是代码本身的问题,这一点回头再说吧。

续上
总算给搞定了(又花了我三个小时,晕),代码本身果然有点问题:
项目根目录下 frmts文件(frmts /leveller/levellerdataset.cpp中 )的171行{ “?, kPI / 180.0, UNITLABEL_DEGREE },少了个引号,加上去就可以了。
最后总结下,如何编译GDAL1.6.1
1.把 frmts文件的171行{ “?, kPI / 180.0, UNITLABEL_DEGREE },加上引号;
2.改动根目录下nmake.opt文件的GDAL_HOME的地址,当然也可以不用改。这个地址是后续所安装GDAL的根目录。
3.打开“Visual Stdio 2005命令提示”,cd到项目根目录下,输入命令:nmake /f makefile.vc,回车,OK。

至此,编译工作已经完成。接下来再记录下一些方便开发的后续工作(以下来自http://www.3sdn.net/giszt/osgis/2008-12-11/148.html ):
1.安装GDAL:
在上面编译完成后,继续在DOS窗口中输入:nmake /f makefile.vc install。这会增加bin,data,html三个文件夹。继续输入:nmake /f makefile.vc devinstall,这会增加include 和 lib两个文件夹。
2。译C#源码(可选,我暂时不用,先放这里做个MARK)
cd 到C:/gdal-1.5.0/swig/csharp

进入C#源文件所在的文件夹,然后再输入:nmake /f makefile.vc 编译完成后,将会生成以下8个dll文件:
gdal_csharp.dll、gdalconst_csharp.dll、ogr_csharp.dll、osr_csharp.dllgdal_wrap.dll、gdalconst_wrap.dll、ogr_wrap.dll、osr_wrap.dll。
将以上8个dll文件复制到安装目录的bin文件夹下。
3.使用GDAL:
在VS开发中,要先在工具(Tools)-> 选项(Options)-> Projects(vc6.0为Directories)中添加GDAL的lib和include路径,然后把生成的dll文件放在可执行文件所在的文件夹里或直接放在system32文件夹内即可。
如果要用到bin目录中的exe程序,则要创建环境变量,即把GDAL的安装目录的bin路径(如C:/gdal-1.6.0/bin)添加到环境变量中的Path。添加方法为:右击“我的电脑”-> “属性”->”高级”,点击“环境变量”按钮,在系统变量里找到Path,如果没有可添加Path变量,然后把路径添加进去,多个路径以分号分隔。

PS: 于2009.10.12
以上经过我验证,这种编译并不最优,在nmake.opt文件中修改MSVC_VER的值为1500,删除原先编译出的东东,重新编译(VS2008),OK。
另外,要使得编译后bin目录中自带的application能正常使用,以及自己的程序可以解析出完整的数据,则需要设置环境变量GDAL_DATA,其值为编译后的Data的路径,具体可以参见GDAL 的FAQ。
对于S_57格式文件,要完整解析数据,需要适当设置环境变量OGR_S57_OPTIONS(理论上是,但是我在程序中使用CPLSetConfigOption()似乎没用,这点等我回头解决了再谈。)

这篇关于GDAL编译过程中的几个问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1126525

相关文章

Ubuntu上手动安装Go环境并解决“可执行文件格式错误”问题

《Ubuntu上手动安装Go环境并解决“可执行文件格式错误”问题》:本文主要介绍Ubuntu上手动安装Go环境并解决“可执行文件格式错误”问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未... 目录一、前言二、系统架构检测三、卸载旧版 Go四、下载并安装正确版本五、配置环境变量六、验证安装七、常见

Spring AI 实现 STDIO和SSE MCP Server的过程详解

《SpringAI实现STDIO和SSEMCPServer的过程详解》STDIO方式是基于进程间通信,MCPClient和MCPServer运行在同一主机,主要用于本地集成、命令行工具等场景... 目录Spring AI 实现 STDIO和SSE MCP Server1.新建Spring Boot项目2.a

解决Java异常报错:java.nio.channels.UnresolvedAddressException问题

《解决Java异常报错:java.nio.channels.UnresolvedAddressException问题》:本文主要介绍解决Java异常报错:java.nio.channels.Unr... 目录异常含义可能出现的场景1. 错误的 IP 地址格式2. DNS 解析失败3. 未初始化的地址对象解决

springboot+vue项目怎么解决跨域问题详解

《springboot+vue项目怎么解决跨域问题详解》:本文主要介绍springboot+vue项目怎么解决跨域问题的相关资料,包括前端代理、后端全局配置CORS、注解配置和Nginx反向代理,... 目录1. 前端代理(开发环境推荐)2. 后端全局配置 CORS(生产环境推荐)3. 后端注解配置(按接口

使用Java将实体类转换为JSON并输出到控制台的完整过程

《使用Java将实体类转换为JSON并输出到控制台的完整过程》在软件开发的过程中,Java是一种广泛使用的编程语言,而在众多应用中,数据的传输和存储经常需要使用JSON格式,用Java将实体类转换为J... 在软件开发的过程中,Java是一种广泛使用的编程语言,而在众多应用中,数据的传输和存储经常需要使用j

使用雪花算法产生id导致前端精度缺失问题解决方案

《使用雪花算法产生id导致前端精度缺失问题解决方案》雪花算法由Twitter提出,设计目的是生成唯一的、递增的ID,下面:本文主要介绍使用雪花算法产生id导致前端精度缺失问题的解决方案,文中通过代... 目录一、问题根源二、解决方案1. 全局配置Jackson序列化规则2. 实体类必须使用Long封装类3.

Idea插件MybatisX失效的问题解决

《Idea插件MybatisX失效的问题解决》:本文主要介绍Idea插件MybatisX失效的问题解决,详细的介绍了4种问题的解决方法,具有一定的参考价值,感兴趣的可以了解一下... 目录一、重启idea或者卸载重装MyBATis插件(无需多言)二、检查.XML文件与.Java(该文件后缀Idea可能会隐藏

Nginx 访问 /root/下 403 Forbidden问题解决

《Nginx访问/root/下403Forbidden问题解决》在使用Nginx作为Web服务器时,可能会遇到403Forbidden错误,文中通过示例代码介绍的非常详细,对大家的学习或者工作... 目录解决 Nginx 访问 /root/test/1.html 403 Forbidden 问题问题复现Ng

将图片导入Python的turtle库的详细过程

《将图片导入Python的turtle库的详细过程》在Python编程的世界里,turtle库以其简单易用、图形化交互的特点,深受初学者喜爱,随着项目的复杂度增加,仅仅依靠线条和颜色来绘制图形可能已经... 目录开篇引言正文剖析1. 理解基础:Turtle库的工作原理2. 图片格式与支持3. 实现步骤详解第

Python的pip在命令行无法使用问题的解决方法

《Python的pip在命令行无法使用问题的解决方法》PIP是通用的Python包管理工具,提供了对Python包的查找、下载、安装、卸载、更新等功能,安装诸如Pygame、Pymysql等Pyt... 目录前言一. pip是什么?二. 为什么无法使用?1. 当我们在命令行输入指令并回车时,一般主要是出现以