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

相关文章

Nginx启动失败:端口80被占用问题的解决方案

《Nginx启动失败:端口80被占用问题的解决方案》在Linux服务器上部署Nginx时,可能会遇到Nginx启动失败的情况,尤其是错误提示bind()to0.0.0.0:80failed,这种问题通... 目录引言问题描述问题分析解决方案1. 检查占用端口 80 的进程使用 netstat 命令使用 ss

Java中对象的创建和销毁过程详析

《Java中对象的创建和销毁过程详析》:本文主要介绍Java中对象的创建和销毁过程,对象的创建过程包括类加载检查、内存分配、初始化零值内存、设置对象头和执行init方法,对象的销毁过程由垃圾回收机... 目录前言对象的创建过程1. 类加载检查2China编程. 分配内存3. 初始化零值4. 设置对象头5. 执行

SpringBoot整合easy-es的详细过程

《SpringBoot整合easy-es的详细过程》本文介绍了EasyES,一个基于Elasticsearch的ORM框架,旨在简化开发流程并提高效率,EasyES支持SpringBoot框架,并提供... 目录一、easy-es简介二、实现基于Spring Boot框架的应用程序代码1.添加相关依赖2.添

SpringBoot中整合RabbitMQ(测试+部署上线最新完整)的过程

《SpringBoot中整合RabbitMQ(测试+部署上线最新完整)的过程》本文详细介绍了如何在虚拟机和宝塔面板中安装RabbitMQ,并使用Java代码实现消息的发送和接收,通过异步通讯,可以优化... 目录一、RabbitMQ安装二、启动RabbitMQ三、javascript编写Java代码1、引入

IDEA编译报错“java: 常量字符串过长”的原因及解决方法

《IDEA编译报错“java:常量字符串过长”的原因及解决方法》今天在开发过程中,由于尝试将一个文件的Base64字符串设置为常量,结果导致IDEA编译的时候出现了如下报错java:常量字符串过长,... 目录一、问题描述二、问题原因2.1 理论角度2.2 源码角度三、解决方案解决方案①:StringBui

JavaScript中的reduce方法执行过程、使用场景及进阶用法

《JavaScript中的reduce方法执行过程、使用场景及进阶用法》:本文主要介绍JavaScript中的reduce方法执行过程、使用场景及进阶用法的相关资料,reduce是JavaScri... 目录1. 什么是reduce2. reduce语法2.1 语法2.2 参数说明3. reduce执行过程

mybatis和mybatis-plus设置值为null不起作用问题及解决

《mybatis和mybatis-plus设置值为null不起作用问题及解决》Mybatis-Plus的FieldStrategy主要用于控制新增、更新和查询时对空值的处理策略,通过配置不同的策略类型... 目录MyBATis-plusFieldStrategy作用FieldStrategy类型每种策略的作

linux下多个硬盘划分到同一挂载点问题

《linux下多个硬盘划分到同一挂载点问题》在Linux系统中,将多个硬盘划分到同一挂载点需要通过逻辑卷管理(LVM)来实现,首先,需要将物理存储设备(如硬盘分区)创建为物理卷,然后,将这些物理卷组成... 目录linux下多个硬盘划分到同一挂载点需要明确的几个概念硬盘插上默认的是非lvm总结Linux下多

Python Jupyter Notebook导包报错问题及解决

《PythonJupyterNotebook导包报错问题及解决》在conda环境中安装包后,JupyterNotebook导入时出现ImportError,可能是由于包版本不对应或版本太高,解决方... 目录问题解决方法重新安装Jupyter NoteBook 更改Kernel总结问题在conda上安装了

pip install jupyterlab失败的原因问题及探索

《pipinstalljupyterlab失败的原因问题及探索》在学习Yolo模型时,尝试安装JupyterLab但遇到错误,错误提示缺少Rust和Cargo编译环境,因为pywinpty包需要它... 目录背景问题解决方案总结背景最近在学习Yolo模型,然后其中要下载jupyter(有点LSVmu像一个