Ubuntu 安装 GDAL C++库

article/2025/11/6 2:24:30

1. GDAL简介

GDAL 是读写大量的栅格空间数据格式的广泛应用的开源库。该库起源于 1998年,已经大幅进化。 它支持他自己的数据模型和应用程序接口(API)。 从最初的单一发展的起源,GDAL已发展成为一个分布式的项目,开发人员的数量相对比较大。

GDAL官网下载以及安装教程。

2. 提示

要构建 GDAL 3 或更高版本,至少需要一个 C++11 兼容编译器,以及 PROJ 6 或更高版本。如果是在C++11编译器上构建老版本GDAL会提示namespace std错误。新版本需要安装PROJ依赖库,PROJ又依赖sqlite3和libtiff4,依次安装即可。具体情况可能不同,不过可以从GDAL开始安装,根据提示逐渐安装相应的包即可。

3. 如何在 Ubuntu 中安装具体指定的软件包版本

3.1通过apt安装

在 Ubuntu 中想安装一个软件包的一个特别指定的版本?你可以通过下面的方式来轻松地完成:

sudo apt install package_name=package_version

如何知道某个软件包有哪些可用的版本?可以使用这个命令:

apt list --all-versions package_name

3.1通过源码编译安装

下载安装包,Linux版本的压缩包后缀为.tar.gz,Windows版本压缩包后缀zip。
安装步骤依次执行下面代码。

cd '/home/Downloads/gdal-3.5.1' 			#源码包解压后的位置
./configure --prefix='/home/Softwares' 		#指定安装路径
make										#生成makefile文件
make install								#编译安装

4. 安装

安装GDAL,根据提示在补充安装所需包。缺什么安装什么就行。

4.1 安装GDAL

4.1.1 下载GDAL

参考gdal-3.1.2 linux(Ubuntu) 编译 附SQLite3 PROJ6编译 、Linux系统编译安装GDAL库,官网下载最新的gdal-3.5.1.tar.gz版本的
http://download.osgeo.org/gdal/CURRENT/

4.1.2 安装GDAL

依次执行命令

cd '/home/Downloads/gdal-3.5.1' 			#源码包解压后的位置
./configure --prefix='/home/Softwares' 		#指定安装路径
make										#生成makefile文件
make install								#编译安装ldconfig
gdalinfo --version

如果直接安装GDAL 3.5.1版本,会提示

configure: error: PROJ 6 symbols not found

可以跳到4.2节安装PROJ后再继续4.1节GDAL安装。

如果出现错误

..
/usr/bin/ld: /home/Downloads/gdal-3.5.1/.libs/libgdal.so: undefined reference to `TIFFReadScanline@LIBTIFF_4.0'
/usr/bin/ld: /home/Downloads/gdal-3.5.1/.libs/libgdal.so: undefined reference to `TIFFClose@LIBTIFF_4.0'
/usr/bin/ld: /home/Downloads/gdal-3.5.1/.libs/libgdal.so: undefined reference to `TIFFNumberOfTiles@LIBTIFF_4.0'
/usr/bin/ld: /home/Downloads/gdal-3.5.1/.libs/libgdal.so: undefined reference to `TIFFRGBAImageOK@LIBTIFF_4.0'
/usr/bin/ld: /home/Downloads/gdal-3.5.1/.libs/libgdal.so: undefined reference to `TIFFClientOpen@LIBTIFF_4.0'
/usr/bin/ld: /home/Downloads/gdal-3.5.1/.libs/libgdal.so: undefined reference to `TIFFFlush@LIBTIFF_4.0'
collect2: error: ld returned 1 exit status
make[1]: *** [GNUmakefile:82: gdalinfo] Error 1
make: *** [GNUmakefile:112: apps-target] Error 2

说明安装的libtiff库有问题,重新安装libtiff。

4.2 安装PROJ

4.2.1 下载PROJ

PROJ的安装与使用,PROJ官网连接https://proj.org/download.html。
下载的是proj-8.0.0.tar.gz,最新版的解压后没有configure文件,就挑选了proj-8.0.0.tar.gz。

4.2.2 安装PROJ

依次输入PROJ安装命令

cd '/home/Downloads/PROJ源码文件'
./configure
make
make install

如果出现错误提示:

checking for SQLITE3.. configure: error: in `/home/Downloads/proj-8.0.0':
configure: error: The pkg-config script could not be found or is too old.  Make sure it

则跳到4.3节,安装SQLITE3

如果出现如下错误,需要安装pkg-config:

configure: error: The pkg-config script could not be found or is too old.  Make sure it
is in your PATH or set the PKG_CONFIG environment variable to the full
path to pkg-config.

安装pkg-config

sudo apt-get install pkg-config

重复PROJ安装命令步骤,如果出现错误

checking for TIFF.. configure: error: Package requirements (libtiff-4) were not met:
No package 'libtiff-4' found

见4.4节安装libtiff-4

4.3 安装SQLITE3

4.3.1 SQLITE3源码安装方法

从源码安装:SQLITE3的安装与使用,SQLITE3官网连接https://www.sqlite.org/download.html。

4.3.2 通过apt安装

在Ubuntu可以不用源码编译,直接用命令安装

sudo apt-get install sqlite3

对于Ubuntu >= 20.04,需要使用命令

sudo apt install libsqlite3-dev

我采用的是直接命令安装,安装后,输入命令sqlite3 -version查看版本

sqlite3 -version
3.37.2 2022-01-06 13:25:41 872ba256cbf61d9290b571c0e6d82a20c224ca3ad82971edc46b29818d5dalt1

4.4 安装libtiff-4

源码下载:libtiff-4.4.0,安装教程。
依次执行命令安装

cd '/home/Downloads/PROJ源码文件'
./configure
make
make install
sudo ldconfig #创建连接

或者

sudo apt-get install libtiff-tools

或者

sudo apt-get install libtiff-dev

试试看,直到libtiff安装成功。终端输入:tiffinfo

tiffinfo
LIBTIFF, Version 4.4.0
Copyright (c) 1988-1996 Sam Leffler
Copyright (c) 1991-1996 Silicon Graphics, Inc.Display information about TIFF filesusage: tiffinfo [options] input..
where options are:-D		read data-i		ignore read errors-c		display data for grey/color response curve or colormap-d		display raw/decoded image data-f lsb2msb	force lsb-to-msb FillOrder for input-f msb2lsb	force msb-to-lsb FillOrder for input-j		show JPEG tables-o offset	set initial directory offset-r		read/display raw image data instead of decoded data-s		display strip offsets and byte counts-w		display raw data in words rather than bytes-z		enable strip chopping-M size	set the memory allocation limit in MiB. 0 to disable limit-#		set initial directory (first directory is # 0)

继续安装PROJ,可能提示

..
checking for SQLITE3.. yes
checking for sqlite3.. yes
checking for TIFF.. yes
checking for curl-config.. not-found
configure: error: curl not found. If wanting to do a build without curl support (and thus without built-in networking capability), explictly disable it with --without-curl

重新安装,忽略curl

./configure --without-curl

成功

继续安装GDAL

..
checking for proj_create_from_wkt in -lproj.. no
checking for proj_create_from_wkt in -lproj.. no
checking for internal_proj_create_from_wkt in -lproj.. no
checking for internal_proj_create_from_wkt in -lproj.. no
checking for internal_proj_create_from_wkt in -linternalproj.. no
checking for internal_proj_create_from_wkt in -linternalproj.. (cached) no
configure: error: PROJ 6 symbols not found
sudo apt install libproj-dev

4.5 测试GDAL

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

4.5.1 配置环境变量

sudo gedit /etc/profile

在文件尾输入:

export PATH=$PATH:/usr/local/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib

保存并退出后,执行source /etc/profile更新变量

4.5.2 代码测试

Qt配置GDAL库可以看Ubuntu 安装 HDF5 C++库中的配置方法。在这里插入图片描述

新建一个文件:

include"gdal.h"
include"gdal_priv.h"
include"cpl_conv.h"
using namespace std;
int main()
{GDALDataset  *poDataset;const char *pszFilename = "test.tif";GDALAllRegister();poDataset = (GDALDataset *) GDALOpen( pszFilename, GA_ReadOnly );if( poDataset == NULL ){cout << "wrong file ";}return 0;
}

成功
在这里插入图片描述


http://chatgpt.dhexx.cn/article/aq57PhAk.shtml

相关文章

JAVA使用GDAL入门指南

如果你打开了这篇博客&#xff0c;那么你肯定和我当初一样的苦逼。 话不多说&#xff0c;分析下我学习gdal的一丢丢心得。 1.你要知道什么GDAL&#xff0c;它是干什么的。 gdal到底是什么呢&#xff0c;相信你已经百度过了。。。。 ** 2.Java集成gdal 2.1 下载Java版本的gd…

在Python中安装GDAL(最简单,最详细图文教程)

在Python中安装GDAL(最简单,最详细图文教程) 今天是2021年1月20日。为了安装在pythong中安装GDAL,我浏览了几十个网页,发现有99%都是垃圾,浪费了我非常多的时间。最后我安装成功了,在这里我把我的全过程放在这里。希望大家少走些弯路,也少浪费点时间。 首先我的专业背…

Python中安装GDAL库

GDAL(Geospatial Data Abstraction Library)是一个在X/MIT许可协议下的开源栅格空间数据转换库。它利用抽象数据模型来表达所支持的各种文件格式。它还有一系列命令行工具来进行数据转换和处理&#xff0c;可以用来处理栅格数据如遥感影像、DEM等。 1. 下载GDAL 安装GDAL库是…

python安装gdal库

1、直接输入pip install gdal&#xff0c;报错无法安装。 原因&#xff1a;GDAL不是纯净的python库&#xff0c;无法像pip install flask这样安装库文件。 解决方法&#xff1a; 2、首先要明确自己安装路径下有没有gdal这个文件 在winr&#xff0c;输入cmd&#xff0c;键入…

Gdal总结

1、头文件 #include<gdal.h> #include<gdal_priv.h> #include<gdalwarper.h> 2、注册驱动设置中文路径加载数据 //注册所有的驱动GDALAllRegister();//设置支持中文路径和文件名CPLSetConfigOption("GDAL_FILENAME_IS_UTF8", "NO"); /…

gdal概览

GDAL 1 gdal库2 栅格驱动3 栅格数据集&#xff08;就是包含各种栅格属性的一个类&#xff09;3.1 坐标&#xff08;6个参数&#xff09;3.1.2 tif文件的地理坐标&#xff08;两种情况&#xff09; 3.2 波段数、大小、投影等信息3.3 读取栅格像元3.4 创建栅格影像3.4.1 直接用数…

2.GDAL简介

1. 什么使GDAL GDAL全称是Geospatial Data Abstraction Library(地理空间数据抽象库),在一个X/MIT许可协议下读写空间数据(包括栅格数据和矢量数据)的开源库&#xff0c;它利用抽象数据模型来表达所支持的各种文件格式&#xff0c;还使用一系列命令行来进行数据转换和处理。 …

GDAL学习笔记02:GDAL基础知识

你的习惯决定了你会成为什么样的人。 GDAL学习笔记02&#xff1a;GDAL基础知识 前言1. 版本2. 摘要3. 说明4. 微信公众号GISRSGeography 一、GDAL简介二、导入GDAL三、读取遥感影像的信息 前言 1. 版本 1.1 山东青岛&#xff0c;2022年7月17日&#xff0c;Version 1 2. 摘要…

GDAL 安装教程(Python)

引言 本文介绍 GDAL&#xff08;Geospatial Data Abstraction Library&#xff0c;空间数据抽象库&#xff09;的 Python 版本安装教程。 简介 GDAL 是用于栅格和矢量地理空间数据格式的开源转换器。向调用应用程序提供所有受支持格式的单个栅格抽象数据模型和单个矢量抽象数…

TrAdaBoost

TraAdaBoost是AdaBoost算法的扩展。 TraAdaBoost核心思想&#xff1a; same-distribution instance feature:训练数据中与测试数据分布相同的数据&#xff0c;用Ts表示&#xff0c;m 错误预测增加权重 diff-distribution instance feature:训练数据中与测试数据分布不同的数据&…

Boost Build

Window XP Visual Studio 2008 获取Boost库源码 我们可以从http://www.boost.org/ 上获取boost的源代码。当前最新版本为1.45.0。 解压到指定目录 例如&#xff1a;D:/Program Files/boost/目录下 获取bjam 一种方式&#xff1a;从http://sourceforge.net/projects/boos…

BoF and Bos

Bag of freebies 采用一些方法使模型有更高的准确度但是不增加模型的复杂度和模型的推理代价 PS&#xff1a;数据增强应该在图像标准化(normalization)之前完成&#xff1b; Library: Albumentations arxiv github docsAugmentor arxiv github docs Biomedical image augment…

Boost 作为客户端 boost

系列文章目录 lotus Boost 作为客户端 系列文章目录前言一、同步区块高度二、boost 初始化1. 生成钱包地址2. boost设置默认钱包地址 三、boostx向存储市场添加资金四、发单五、离线交易参考 前言 Boost 作为客户端 一、同步区块高度 可以远程调用其它api&#xff0c;也可以…

DART booster

XGBoost基本上都是组合大量小学习率的回归树。在这种情况,越晚添加的树比越早添加的树更重要。 Rasmi根据深度神经网络社区提出一个新的使用dropout的boosted trees,并且证明它在某些情况有更好的结果。 以下是新的tree boosterdart的介绍。 原始文章 特征 Drop Trees是…

boost::format

实在不好意思&#xff0c;原本计划每天一篇&#xff0c;这几天工作遇到问题&#xff0c;只好改为“不定期”一篇&#xff0c; 今天是format library&#xff0c;其实N天前我已经看过了&#xff0c;也动手实验了一下&#xff0c;现在才来把笔记补上。 用过MFC或ATL中的CString的…

adboost

要明确Adaboost是一种算法。 介绍一下Adaboost的历史。 Adaboost的前身的Boosting算法。 Boosting是一种提高任意给定学习算法准确度的方法。它的思想起源于Valiant提出的PAC(Probably Approximately Correct)学习模型。Valiant和Kearns提出了弱学习和强学习的概念,识别错误…

buuctf easymd5

点击f12&#xff0c;查看源代码看看有没有消息 Hint&#xff1a;select * from ‘admin’ where password md5($pass,ture) 我们要让passwordmd5($pass,ture) mysql里面&#xff0c;在用作布尔型判断时&#xff0c;以数字开头的字符串会被当做整型数。 要注意的是这种情况是必…

fastboot与fastbootd介绍

fastboot与fastbootd介绍 前言一、fastboot和fastbootd介绍二、fastbootd与fastbootd区别参考文献 前言 在项目中遇到使用fastboot刷机场景&#xff0c;刷vendor分区出现异常&#xff0c;从而对fastboot和fastbootd有一个更深入的了解&#xff0c;进行一个总结。 一、fastbo…

Everything+Wox

Everything可对磁盘上文件/文件夹进行快速查找 Wox可对应用程序/网站进行快速启动 两者最好结合使用&#xff08;结合使用&#xff0c;两个软件都必须都启动&#xff09; Everything 下载地址&#xff1a;https://www.voidtools.com/zh-cn/ Wox 下载地址&#xff1a;https://gi…

wox wpm 安装 有道插件

1. wox 安装插件 可以通过右键点击setting&#xff0c;到官网上安装&#xff0c;也可以采用简单的方法&#xff1a; wpm install 有道翻译注意&#xff0c;选择有道翻译即可。 2. 英译汉 yd china3. 汉译英