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

相关文章

将Mybatis升级为Mybatis-Plus的详细过程

《将Mybatis升级为Mybatis-Plus的详细过程》本文详细介绍了在若依管理系统(v3.8.8)中将MyBatis升级为MyBatis-Plus的过程,旨在提升开发效率,通过本文,开发者可实现... 目录说明流程增加依赖修改配置文件注释掉MyBATisConfig里面的Bean代码生成使用IDEA生

Java编译生成多个.class文件的原理和作用

《Java编译生成多个.class文件的原理和作用》作为一名经验丰富的开发者,在Java项目中执行编译后,可能会发现一个.java源文件有时会产生多个.class文件,从技术实现层面详细剖析这一现象... 目录一、内部类机制与.class文件生成成员内部类(常规内部类)局部内部类(方法内部类)匿名内部类二、

springboot循环依赖问题案例代码及解决办法

《springboot循环依赖问题案例代码及解决办法》在SpringBoot中,如果两个或多个Bean之间存在循环依赖(即BeanA依赖BeanB,而BeanB又依赖BeanA),会导致Spring的... 目录1. 什么是循环依赖?2. 循环依赖的场景案例3. 解决循环依赖的常见方法方法 1:使用 @La

C# WinForms存储过程操作数据库的实例讲解

《C#WinForms存储过程操作数据库的实例讲解》:本文主要介绍C#WinForms存储过程操作数据库的实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、存储过程基础二、C# 调用流程1. 数据库连接配置2. 执行存储过程(增删改)3. 查询数据三、事务处

JSON Web Token在登陆中的使用过程

《JSONWebToken在登陆中的使用过程》:本文主要介绍JSONWebToken在登陆中的使用过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录JWT 介绍微服务架构中的 JWT 使用结合微服务网关的 JWT 验证1. 用户登录,生成 JWT2. 自定义过滤

java中使用POI生成Excel并导出过程

《java中使用POI生成Excel并导出过程》:本文主要介绍java中使用POI生成Excel并导出过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录需求说明及实现方式需求完成通用代码版本1版本2结果展示type参数为atype参数为b总结注:本文章中代码均为

SpringBoot启动报错的11个高频问题排查与解决终极指南

《SpringBoot启动报错的11个高频问题排查与解决终极指南》这篇文章主要为大家详细介绍了SpringBoot启动报错的11个高频问题的排查与解决,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一... 目录1. 依赖冲突:NoSuchMethodError 的终极解法2. Bean注入失败:No qu

MySQL新增字段后Java实体未更新的潜在问题与解决方案

《MySQL新增字段后Java实体未更新的潜在问题与解决方案》在Java+MySQL的开发中,我们通常使用ORM框架来映射数据库表与Java对象,但有时候,数据库表结构变更(如新增字段)后,开发人员可... 目录引言1. 问题背景:数据库与 Java 实体不同步1.1 常见场景1.2 示例代码2. 不同操作

如何解决mysql出现Incorrect string value for column ‘表项‘ at row 1错误问题

《如何解决mysql出现Incorrectstringvalueforcolumn‘表项‘atrow1错误问题》:本文主要介绍如何解决mysql出现Incorrectstringv... 目录mysql出现Incorrect string value for column ‘表项‘ at row 1错误报错

如何解决Spring MVC中响应乱码问题

《如何解决SpringMVC中响应乱码问题》:本文主要介绍如何解决SpringMVC中响应乱码问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Spring MVC最新响应中乱码解决方式以前的解决办法这是比较通用的一种方法总结Spring MVC最新响应中乱码解