命令行编译开源代码GDAL/OGR(5月28日)

来源:互联网 发布:淘宝运营学徒靠谱吗 编辑:程序博客网 时间:2024/05/08 01:06

一.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()似乎没用,这点等我回头解决了再谈。)

PS:2009.11.12
二. Linux(ubuntu9.04)下:
这个下面的代码不用修改,安装比windows简单:
1. 终端:cd到gdal源代码的路径,然后./configure
可以用./configure --help先查看configure的使用,如果要指定相应的安装路径的话,可以后面加--prefix。如:./configure --prefix=/home/randyqiu/GDAL-runtime,具体的可以参见--help,默认的记得好像是/usr/local/...
2. 继续在该路径下面:make
3.su(最好用root权限来安装),然后输入密码
4.make install
5. OK 了吧,当然前提是已经安装了linux编程的必要工具,如果还没,就先sudo apt-get install build-essential

原创粉丝点击