2008-03-26

gdal安装和使用

一、linux下的安装和使用

1.安装

下载源程序包 ,解压,运行以下三条命令

./configure
make
make install


在/usr/local/lib目录下会出现编译好了的相关gdal库

2.使用

2.1 gdal库连接问题

gdal成功安装后,相关的库也会拷贝到/usr/local/lib目录下,但这并不意味着系统能马上找到加载libgdal.so库的路径,还需要加载库路径的问题:让程序在运行时能找到这些库

运行时如果出现以下错误:

 error while loading shared libraries: libgdal.so.1: cannot open shared object file: No such file or directory

说明系统不知道gdal共享库加载路径,运行 ldd命令 列出程序正常运行所需要的共享库

ldd test.o

[root@test]# ldd a.out
        /usr/lib/libcwait.so (0x0054f000)
        libgdal.so.1 => not found
        libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00b42000)
        libm.so.6 => /lib/tls/libm.so.6 (0x009b5000)
        libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00b03000)
        libc.so.6 => /lib/tls/libc.so.6 (0x0088a000)
        /lib/ld-linux.so.2 (0x00871000)
解决办法如下

a. 设置环境变量:

设置$LD_LIBRARY_PATH=库所在目录(多个目录用:分隔),系统加载工具将顺序搜索变量指定的目录

LD_LIBRARY_PATH=/usr/local/lib:/usr/local/erlang/lib; export LD_LIBRARY_PATH

b.  以root身份把库路径加入/etc/ld.so.conf

vim /etc/ld.so.conf.d/gdal.conf

在此文件中增加如下路径

/usr/local/gdal-1.5.1/.libs

然后运行ldconfig更新/etc/ld.so.cache
/sbin/ldconfig

c.

直接把gdal相关的库拷贝到/usr/lib下

共享库搜索顺序一般是$LDLIBRARY_PATH,/etc/ld.so.cache, /usr/lib, /lib

参考:Linux编程使用库

2.2 编译使用GDAL库的C++程序

运行以下命令

g++ test.cpp -lgdal -o test.o 

 

 

二、Mac OS X下的安装与使用

1.安装

William Kyngesburye维护了一个GDAL的Mac OS X framework .

按指示安装即可,卸载的话直接将/Library/Framework/GDAL.framework, /Library/Application Support/GDAL,~/Library/Application Support/GDAL 扔到trash里

 

2.使用

编译使用GDAL库的C++程序运行以下命令

g++ gdal_test.cpp -framework GDAL -o gdal_test.o
 

注意

1. 不要错用成gcc命令了;

2. C++程序中的include一律要加上GDAL/,例如 

 

#include "GDAL/ogrsf_frmts.h"
 

三、跨平台编译

使用预处理器的技巧区分处理平台的不同

用编译器的-D传入平台相关信息,一个例子:

#ifdef MAC_OS_X
	#include "GDAL/ogrsf_frmts.h"
#else
	#include "ogrsf_frmts.h"
#endif
 

在Mac下编译

g++ -D MAC_OS_X -framework GDAL test.cpp -o test.o
 

 

在linux下编译方式不变

 

g++ test.cpp -lgdal -o test.o

 

也许还有更优雅的跨平台方法,我暂时还不知道

 

 

评论
发表评论

您还没有登录,请登录后发表评论

cryolite
搜索本博客
存档
最新评论