一、linux下的安装和使用
1.安装
下载源程序包 ,解压,运行以下三条命令
./configure make make install
在/usr/local/lib目录下会出现编译好了的相关gdal库,我用的redhat linux下的一个问题是/usr/local/lib目录不在库的查找路径中,因此链接时会出现找不到gdal库的问题。有人认为这是redhat的一个bug ,但redhat解释是故意这样做的,他们建议开发人员可以自行添加该路径到库搜索目录中:
echo /usr/local/lib > /etc/ld.so.conf.d/local.conf /sbin/ldconfig
另外,如下配置命令可以让python版本的gdal在make时安装:
./configure --with-python
如果出现错误:
extensions/gdal_wrap.cpp: error: Python.h: No such file or directory
这是没有python-dev的缘故,参考本文末尾。
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=库所在目录(多个目录用:分隔),系统加载工具将顺序搜索变量指定的目录
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. 从源代码直接编译安装
下载源代码后 ./configure & make & sudo mak install
对于32位的老mac以上就可以了,
对于64位的mac,如果用上述命令编译安装只会生成64位的动态库和相关gdal程序。可以通过如下命令configure后再编译安装
./configure CFLAGS="-arch i386 -arch x86_64" CXXFLAGS="-arch i386 -arch x86_64" LDFLAGS="-arch i386 -arch x86_64" --disable-dependency-tracking
这样就会生成同时支持32位和64位的动态链接库了。
参考这里:
[1] http://www.kyngchaos.com/macosx/build/gdal
[2] http://www.mail-archive.com/libtool@gnu.org/msg12306.html
2. dmg安装
William Kyngesburye维护了一个GDAL的Mac OS X framework .
按指示安装即可,卸载的话直接将/Library/Framework/GDAL.framework, /Library/Application Support/GDAL,~/Library/Application Support/GDAL 扔到废纸篓里
2.1
安装成功后,安装目录(/Library/Frameworks/GDAL.framework/)下是没有Libraries目录的。
如果我们的程序要以共享库的方式使用,则需要在安装目录(/Library/Frameworks/GDAL.framework/)下加一个符号连接:
cd /Library/Frameworks/GDAL.framework/
sudo ln -s Versions/Current/Libraries/ Libraries
这样就可以在Mac下创建我们自己的使用GDAL的共享库了
2.2 对Python的支持
安装成功后,在安装目录/Library/Frameworks/GDAL.framework下有Versions/1.6/Python,gdal的python库就位于这个目录的site-packages中。
安装程序会在/Library/Python/2.5/site-packages目录下增加一个gdal.pth文件,该文件中指定了上述gdal的python库位置所在。
安装Python2.6后,因为安装程序不会自动为2.6指定gdal的安装路径,要想中2.6中使用gdal库,需要在Python 2.6的安装目录的site-packages中加入上述gdal.pth文件才行
3.使用
编译使用GDAL库的可执行C++程序:
g++ gdal_test.cpp -framework GDAL -o gdal_test.o
编译生成使用GDAL库的共享库的C程序:(gcc 4.2.1)
gcc -o GDAL_drv.so \ -fpic -shared -flat_namespace -undefined suppress -fno-common \ GDAL_drv.c spectrometer.c \ -framework GDAL
注意
C/C++程序中的include一律要加上GDAL/,例如
#include "GDAL/ogrsf_frmts.h"
三、跨平台编译
3.1 源代码中的处理
使用预处理器的技巧区分处理平台的不同,在不同的平台上会定义一些宏以表述编译的OS平台,例如:
在Mac OS平台下会预定义一个宏__APPLE__
在Linux下会预定义宏 __linux__
在FreeBSD下有 __FreeBSD__
在Unix下都会定义有宏 __unix__
甚至不同处理器也有宏对应,例如
__i386__ 和 __X86_64__对应着着 Linux x86
__ia64__对应着 Linux IA64
更多的参见: http://dev.csdn.net/article/63/63391.shtm
一个例子:
#ifdef __APPLE__ #include "GDAL/ogrsf_frmts.h" #elif defined(__linux__) #include "ogrsf_frmts.h" #endif
在Mac下编译
g++ -framework GDAL test.cpp -o test.o
在linux下编译方式不变
g++ test.cpp -lgdal -o test.o
3.2 构建工具中的处理
有时候不同平台有不同的编译命令,因此makefile区别对待。例如编译链接共享文件对象(shared object)的命令参数在linux下和MaxOSX下是不同的,可以用uname -s的shell命令区别平台
myos := $(shell uname -s) ifeq ($(myos),Linux) CFLAGS = -shared else CFLAGS = -bundle -undefined suppress -flat_namespace endif gcc -std=c99 -fPIC $(CFLAGS) -o $@ $<
四、其它问题
1. geos的支持
geos库是JTS的C/C++版,要进行几何操作的话需要安装geos库,geos库必须在gdal之前安装
正确安装geos库后,在gdal的confiugre完成后会看到:
GEOS support: yes
2. 支持python的gdal
配置时加上--with-python参数即可:
./configure --with-python
如果出现如下错误:
error: Python.h: No such file or directory
这是没有安装python-dev的原因
首先,检查python版本
$ python -V
Python 2.7.2+
根据版本选择要安装python-dev:
$ sudo apt-get install python2.7-dev
最好安装 numpy
sudo apt-get install python-numpy
otherwise:
import _gdal
ImportError: No module named _gdal
从源码安装python:
下载源码,configure->make->make install后,运行python -V查看
需要指定gdal库的位置,如前,必要时执行ldconfig
在gdal的swig/python目录下运行
python setup.py build
python setup.py install
检查模块是否正确安装
pyhon环境中运行
from osgeo import ogr
3. 64位linux下build如果出现如下错误
/usr/lib/libexpat.so: could not read symbols: File in wrong format
是说expat是32位的不能在64位机器上,可以修改configure生成的GDALmake.opt指向正确的文件,或者confiugre时指定不要expat,但这样就不支持KML和GPX了
可采用使用自带的expat来编译, 配置时加上如下参数:
./configure --with-expat=buildin
4. HDF4的支持:从源代码编译安装HDF4
4.1 前提
在ubuntu中编译hdf4的时候需要yacc和flex
如果configure时出现错误:
cannot find yacc utility
要安装byacc
sudo apt-get install byacc
4.2 HDF4需要安装第三方支持库:szip jpeg 等
策略是将这些都安装在/usr/local下,在hdf安装配置时指定(--prefix=...)这些第三方库的安装路径,在gdal安装配置时指定hdf的安装路径
4.2.1 szip库的安装
可以选择szip库的支持,make安装szip时,缺省是安装在当前szip源文件目录下的,所以最好指定安装路径:
./configure --prefix=/usr/local/szip-2.1
4.2.2 jpeg第三方库的安装
http://www.hdfgroup.org/ftp/lib-external/jpeg/src/jpegsrc.v6b.tar.gz
./configure --prefix=/usr/local/jpeg6b --enable-shared --enable-static
1) libtool的问题
在64位环境中make的时候会出现libtool错误,可以apt-get 安装libtool,然后在安装目录下建立一个到libtool的软链接:
ln -s `which libtool` libtool
这样就可以make了
2) 手工创建目标目录
但是在make install之前,还要先手工建好以下目录
sudo mkdir -p /usr/local/jpeg6b/bin /usr/local/jpeg6b/include /usr/local/jpeg6b/lib /usr/local/jpeg6b/man/man1
sudo make install
4.2.3 zlib库的安装
一般系统都自带了这个库,不过版本较低(1.2.3)。如果坚持安装最好自定义安装路径:
./configure --prefix=/usr/local/zlib-1.2.5
make
sudo make install
如果不指定prefix,有可能override系统自带的zlib,导致某些其它应用不能正常使用。好在zlib源代码提供了一个卸载选项:
sudo make uninstall
4.3 hdf4的编译安装
需要指定安装目标路径(prefix)。不然就装在当前目录下了。
./configure --prefix=/usr/local/hdf-4.2.7 --with-jpeg=/usr/local/jpeg6b --with-szlib=/usr/local/szip-2.1 --enable-shared=yes --enable-static=yes --disable-fortran
或者,坚持使用zlib-1.2.5的话
./configure --prefix=/usr/local/hdf-4.2.7 --with-jpeg=/usr/local/jpeg6b --with-szlib=/usr/local/szip-2.1 --with-zlib=/usr/local/zlib-1.2.5 --enable-shared=yes --enable-static=yes --disable-fortran
make
sudo make install
将HDF4库配置安装在/usr/local/hdf-4.2.7目录下
4.4 gdal的编译安装
./configure --with-python --with-hdf4=/usr/local/hdf-4.2.7
make
sudo make install
参考:
http://www.cnblogs.com/yeahgis/articles/2446336.html
http://www.hdfgroup.org/release4/obtain.html
相关推荐
### GDAL 安装与使用详解 ...通过上述步骤,可以顺利完成 GDAL 的安装和基本使用的测试。GDAL 是一个非常强大的工具库,广泛应用于地理信息系统 (GIS) 开发中。了解其安装和使用方法对于 GIS 开发者来说是非常重要的。
windows下 gdal安装并集成FIleGDB ,全成跟着文档来操作即可
编译完成之后,还需要打开C:\gdalsrc\nmake.opt文件,根据自己的机器环境设置GDAL_HOME变量,该变量指向了GDAL安装的目标目录,如C:\GDAL。 接下来,使用nmake命令执行安装,包括makefile.vcinstall和makefile....
首先,你需要安装GDAL的源代码,并在Ubuntu 10.04上配置、编译和安装。这个过程中可能需要用到诸如`autotools`、`libgeotiff`、`proj`等依赖库。接着,由于GDAL原生并不支持Java,所以要用到SWIG(Simplified ...
### Python及GDAL安装说明与问题解决方法 #### 一、环境准备与注意事项 在开始安装之前,确保您的计算机上已经没有安装过Python、GDAL等相关软件,因为这些软件的不同版本之间可能存在32位和64位的冲突。无论是32...
在配置完成后,可以使用 make 命令来编译 GDAL,最后使用 make install 命令来安装 GDAL。安装完成后,GDAL 的默认安装路径为 /usr/local/lib。 2. GDAL 编译 在编译 GDAL 之前,需要先配置 java.opt 文件,将其...
GDAL(Geospatial Data Abstraction Library)是一个开源的地理空间数据处理库,广泛用于GIS(地理信息系统)领域。...使用GDAL时,了解并遵守这些许可协议是非常重要的,因为它们定义了软件组件的使用范围和条件。
在Visual Studio 2013环境下配置GDAL,以便在C++项目中使用,是开发者必须掌握的一项技能。 一、GDAL库下载与解压 首先,你需要从GDAL的官方网站或者其他可靠的源下载GDAL的预编译版本,通常是适用于Windows的GDAL ...
GDAL 库介绍、安装与使用介绍 GDAL(Geospatial Data Abstraction Library)是一种转换各种栅格数据格式的库,能够...但是,需要注意的是,GDAL 的安装和使用需要有一定的技术基础和经验,否则可能会出现一些问题。
7. 安装编译结果:编译成功后,通过运行“nmake /f makefile.vc install”和“nmake /f makefile.vc devinstall”将GDAL库安装到目标文件夹,生成必要的库文件和头文件。 8. 编译C#源代码:进入"C:\gdal-1.5.0\swig...
GDAL 在 VS2008 C# 中的编译、安装和使用 GDAL(Geospatial Data Abstraction Library)是一种开放源代码的空间数据处理库,它可以对多种空间数据格式进行读写操作。GDAL 库提供了一个统一的接口来访问和操作不同...
确保在安装时同时安装了Python绑定,因为我们将使用Python语言来演示GDAL的使用。 ### 2. 导入GDAL模块 在Python环境中,我们需要导入GDAL库。GDAL在Python中的接口是`osgeo`模块下的`gdal`子模块: ```python ...
在安装 GDAL 之前,需要安装 Visual Studio 2010 和 GEOS 3.3.8。这两者都是 GDAL 的依赖项。同时,需要安装 Python 2.7,以便在 Python 环境下使用 GDAL。 二、安装心得 安装 GDAL 有两种方案可供选择: 1. 利用...
在使用GDAL时,应该注意库的安装和配置,特别是在不同的操作系统和开发环境中。由于GDAL是C++编写的,因此在非C++语言中使用GDAL时,可能需要借助SWIG等工具生成对应语言的绑定。此外,GDAL的抽象数据模型包含了丰富...
GDAL下载版本为3.4.3,含有python3.9两个版本的安装包。安装适合自己需求可以访问链接:https://www.lfd.uci.edu/~gohlke/pythonlibs/#python-ldap下载对应安装包;
GDAL(Geospatial Data Abstraction Library)是一个开源的地理空间数据处理库,它支持多种地理空间文件格式...通过本地的.whl文件,我们可以快速便捷地在Python环境中安装和使用GDAL,从而高效地处理和分析地理数据。
GDAL 库是一个开源的地理信息系统(GIS)库,提供了对栅格和矢量数据的支持。在 Java 中使用 GDAL 库需要将其配置到 Java 项目中,但是在配置过程中容易遇到版本不一致的问题。 GDAL 版本不一致的原因 GDAL 库有多...
- 然后安装GDAL的核心库,这通常可以通过包管理器完成,如在Ubuntu上使用:`sudo apt-get install gdal-bin libgdal-dev` - 如果提供的离线包包含GDAL库文件,你需要将它们解压到合适的目录,例如 `/usr/local/`,...
gdal在linux上安装需要的文件比较多,附件包含gdal2.2.3及依赖的文件: proj-4.9.3.tar.gz geos-3.6.2.tar.gz jpegsrc.v9b.tar.gz hdf-4.2.13.tar.gz hdf5-1.10.1.tar.gz netcdf-4.4.1.tar.gz gdal-2.2.3.tar....