您的位置:首页 > 其它

GDAL的安装和配置---出现的问题

2011-10-30 12:26 316 查看

一、linux下的安装和使用

1.安装

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

Java代码

./configure make make install

./configure
make
make install


在/usr/local/lib目录下会出现编译好了的相关gdal库,我用的redhat linux下的一个问题是/usr/local/lib目录不在库的查找路径中,因此链接时会出现找不到gdal库的问题。有人认为这是redhat的一个bug ,但redhat解释是故意这样做的,他们建议开发人员可以自行添加该路径到库搜索目录中:

Shell代码

echo /usr/local/lib > /etc/ld.so.conf.d/local.conf /sbin/ldconfig
echo /usr/local/lib > /etc/ld.so.conf.d/local.conf

/sbin/ldconfig


另外,如下配置命令可以让python版本的gdal在make时安装:

./configure --with-python


2.使用

2.1 gdal库连接问题

在我用的RetHat linux上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=库所在目录(多个目录用:分隔),系统加载工具将顺序搜索变量指定的目录

Java代码

LD_LIBRARY_PATH=/usr/local/lib:/usr/local/erlang/lib; export 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++程序

运行以下命令

Java代码

g++ test.cpp -lgdal -o test.o
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐