Linux系统编译GDAL库

操作系统:Ubuntu 20.04

官网下载GDAL及其依赖库最新版本:

gdal 3.3.2

proj 8.1.1

geos 3.9.1

sqlite-autoconf-3360000

官网说明:要构建 GDAL 3 或更高版本,您至少需要一个 C++11 兼容编译器,以及 PROJ 6 或更高版本。这只会为您提供一个缺少大量驱动程序的最小构建。有关其他可选依赖项,请参阅光栅驱动程序和矢量驱动程序页面。
因此,GDAL库最小依赖安装就是PROJ库。

编译安装PROJ

解压进入PROJ目录,执行命令,若提示权限不够加sudo

./configure && make && make install

编译问题解决:

./configure 提示 configure: error: Please install sqlite3 binary.

解决上述问题通过以下命令:

apt-get install  sqlite3 && apt-get install libsqlite3-dev

如果依然报错,采用源码安装,解压进入Sqlite目录,执行命令安装:

./configure && make && make install

./configure 提示 No package ‘libtiff-4’ found

apt-get install libtiff-dev 

可能需要安装curl:

sudo apt-get install curl

编译并安装GEOS

解压进入GEOS目录,执行命令,若提示权限不够加sudo

./configure && make && make install

编译并安装GDAL

解压进入GDAL目录,执行命令,若提示权限不够加sudo

./configure && make && make install

提示:make时间很久

如果 ./configure 提示 configure: error: PROJ 6 symbols not found 改为使用以下命令:

./configure --with-proj=/usr/local 

编译过程报错:

/gdal-3.1.1/.libs/libgdal.so: undefined reference to `sqlite3_column_origin_name'
/gdal-3.1.1/.libs/libgdal.so: undefined reference to `sqlite3_column_table_name'

具体做法是在源码文件夹下

cd ./sqlite-autoconf-3320300/sqlite3.c

添加#define SQLITE_ENABLE_COLUMN_METADATA 1这行代码

#define SQLITE_CORE 1
#define SQLITE_AMALGAMATION 1
#ifndef SQLITE_PRIVATE
# define SQLITE_PRIVATE static
#endif
#define SQLITE_ENABLE_COLUMN_METADATA 1

/************** Begin file ctime.c *******************************************/

参考:https://www.cnblogs.com/xuanmanstein/p/13227545.html

按照默认位置安装成功后,会在/usr/local/include文件夹中产生一系列.h文件(cpl_config.h、gdal.h……),在/usr/local/lib文件夹中产生5个库文件,其中libgdal.a和libgdal.la为静态链接库,libgdal.so等为动态链接库。

配置环境变量

运行以下命令

vim ~/.bashrc

#写入以下内容:
export PATH=$PATH:/usr/local/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib

保存并退出后,执行以下命令更新变量:

source ~/.bashrc

验证是否安装成功

新建文件hello.cpp

#include <iostream>
#include "gdal.h"
using namespace std;
 
int main() {
    cout << "Hello World!" << endl;
    return 0;
}

执行以下命令即可成功输出

g++ hello.cpp -lgdal -o hello    //c++编译,引用gdal库

./hello                      

成功输出“hello world”

参考:https://www.jianshu.com/p/529588db4fec

https://www.jianshu.com/p/a51d54e0c75c

https://blog.csdn.net/wusanchui/article/details/108316437

https://juejin.cn/post/6875970706745196558

https://www.jianshu.com/p/0925a1ea6a8b

https://blog.csdn.net/gispipi/article/details/108140754

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐