从头安装gdal库(Linux环境下的Python版)

news2024/11/28 2:37:20

目录

  • 前言
    • GDAL安装
    • SWIG安装
    • proj 安装
    • sqlite安装
    • pkg-config 安装
    • 其他报错
      • No package 'libtiff-4' found
      • Package 'liblzma', required by 'libtiff-4', not found
      • Package 'libjpeg', required by 'libtiff-4', not found
      • Package 'zlib', required by 'libtiff-4', not found
      • checking for curl-config... not-found
      • configure: error: PROJ 6 symbols not found
  • 参考链接

前言

大多数情况下都是可以直接pip wheel安装成功的,但有些特殊情况下(比如一个容器内)需要从头配置gdal库。我“有幸”亲自体验了一把,整个过程** “痛并快乐着” **。整个过程查了很多资料,中间也遇到了很多问题,部分在网上没有找到相关答案,整个过程全网也没有一个类似的教程,因此记录一下留给有需要的程序猿/程序媛。

整个思路就是风来将挡、水来土掩。首先安装GDAL,不出意外的话会报错,需要安装PROJ6。然后安装PROJ6,不出意外的话就会报错,需要安装sqlite3、pkg-config和libtiff-4。一般上述安装完成基本上没有太大问题,但如果你是一个缺失各种环境和包的容器,不出意外的话又会报错,比如还需要安装liblzma、libjpeg和zlib。

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

GDAL安装

下载地址:http://download.osgeo.org/gdal/
选择合适的版本。我这里以3.3.3版本为例。

# 新建临时文件夹存储
mkdir /temp
cd temp
# 开始安装
wget http://download.osgeo.org/gdal/3.3.3/gdal-3.3.3.tar.gz  # 下载安装包
tar -xvzf gdal-3.3.3.tar.gz  # 解压
cd gdal-3.3.3
# 编译安装
./configure --with-python='/usr/bin/python3.7'  # 可通过which python3.7查看
make -j8  # -j为多线程执行,可通过make --help查看
make install

# 构建python包
cd swig/python/
python setup.py build
python setup.py install


ldconfig  # 更新动态链接库
gdalinfo --version

这里使用./configure --with-python='/usr/bin/python3.7'配置时,会出现如下所示的结果,
注意查看SWIG bindings的状态,如果是no,就需要安装SWIG才能构建python包,安装完后再次配置该状态会变为python。
安装完SWIG后,再次编译之前最好清除之前编译的文件
make distclean
Github/gdal issues里面有相关问题的提问,但没有解决方法,不过给了一些优化的方法,可以参考:
https://github.com/OSGeo/gdal/issues/1199
在这里插入图片描述
在这里插入图片描述

报错:

collect2: error: ld returned 1 exit status
GNUmakefile:90: recipe for target 'gdalinfo' failed
make[1]: *** [gdalinfo] Error 1
make[1]: Leaving directory '/temp/gdal-3.3.3/apps'
GNUmakefile:120: recipe for target 'apps-target' failed
make: *** [apps-target] Error 2

在这里插入图片描述
这个没有解决,不过测试的Gdal已经可以正常使用。有巨佬知道的话欢迎留言指导

SWIG安装

下载地址:https://sourceforge.net/projects/swig/files/swig/
https://sourceforge.net/projects/swig/files/swig/swig-4.1.0/swig-4.1.0.tar.gz
安装流程

cd temp
wget https://sourceforge.net/projects/swig/files/swig/swig-4.1.0/swig-4.1.0.tar.gz
tar -xvzf swig-4.1.0.tar.gz
# 编译安装
cd swig-4.1.0
./configure
make
make install

安装完成后使用swig -version测试安装是否成果。下图表示安装成功。
在这里插入图片描述

报错:Cannot find pcre2-config script from PCRE2 (Perl Compatible Regular Expressions) library package. This dependency is needed for configure to complete,
在这里插入图片描述
这个下面已经给出了解决办法,4种方法,最简单的是./configure --without-pcre
安装不安装都行,这个是prel语言包,没有安装再次编译时会提示The SWIG test-suite and examples are configured for the following languages: perl5
安装方法如下:
perl5安装

wget https://www.cpan.org/src/5.0/perl-5.28.0.tar.gz
tar -xzf perl-5.28.0.tar.gz
cd perl-5.28.0
./Configure -des -Dprefix=$HOME/localperl  # 注意大写C
make 
make test
make install

proj 安装

官方下载地址:https://proj.org/download.html
proj-8.1.1.tar.gz

cd temp
wget https://download.osgeo.org/proj/proj-8.1.1.tar.gz
tar -xvzf proj-8.1.1.tar.gz
# 编译安装
cd proj-8.1.1
./configure
make
make install

报错:
在这里插入图片描述

sqlite安装

下载地址:https://www.sqlite.org/download.html

wget https://www.sqlite.org/snapshot/sqlite-snapshot-202301131932.tar.gz
# 解压
tar -xvzf sqlite-snapshot-202301131932.tar.gz
编译安装
cd sqlite-snapshot-202301131932
./configure
make
make install

在这里插入图片描述
测试

sqlite3 student
.exit

弹出如图所示表示安装成功。
在这里插入图片描述

pkg-config 安装

下载地址:https://lists.freedesktop.org/archives/pkg-config/2017-March/001084.html

wget http://pkgconfig.freedesktop.org/releases/pkg-config-0.29.2.tar.gz
tar -xvzf pkg-config-0.29.2.tar.gz
# 编译安装
cd pkg-config-0.29.2
./configure 
make
make check
make install

make check 结果
编译完成结果
报错:
在这里插入图片描述将./configure更改为下面的命令即可。

./configure --with-internal-glib

参考:https://blog.csdn.net/wxh0000mm/article/details/122322486


其他报错

出现Package '****', required by 'libtiff-4', not found 基本上都是这个包缺失,下载编译即可解决。

No package ‘libtiff-4’ found

在这里插入图片描述
解决办法:安装libtiff-4包

下载地址:https://www.linuxfromscratch.org/blfs/view/svn/general/libtiff.html

wget https://download.osgeo.org/libtiff/tiff-4.5.0.tar.gz
tar -zxvf tiff-4.5.0.tar.gz
cd tiff-4.5.0
./configure
make
make install

Package ‘liblzma’, required by ‘libtiff-4’, not found

liblzma缺失,liblzma库是xz utils的子集,所以直接安装xz就可以解决。

wget http://tukaani.org/xz/xz-5.2.2.tar.gz
tar -xzvf xz-5.2.2.tar.gz
cd xz-5.2.2
./configure
make
make install

Package ‘libjpeg’, required by ‘libtiff-4’, not found

在这里插入图片描述
下载地址:http://www.ijg.org/
http://www.ijg.org/files/jpegsrc.v9e.tar.gz

wget http://www.ijg.org/files/jpegsrc.v9e.tar.gz
tar -xzvf xz-5.2.2.tar.gz
cd xz-5.2.2
./configure
make
make install

Package ‘zlib’, required by ‘libtiff-4’, not found

在这里插入图片描述
下载地址:http://www.zlib.net/
http://www.zlib.net/zlib-1.2.13.tar.gz

wget http://www.zlib.net/zlib-1.2.13.tar.gz
tar -xzvf zlib-1.2.13
cd zlib-1.2.13
./configure
make
make install

checking for curl-config… not-found

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,然后重新安装PRO。对我来说不重要,所以直接忽略。
./configure --without-curl

configure: error: PROJ 6 symbols not found

1、安装PROJ 6以上的版本。安装教程:proj 安装
2、如果安装过上面的还报错,可能是之前使用apt install libproj-dev,使用apt remove libproj-dev卸载问题便解决。

参考链接

Ubuntu 安装 GDAL C++库
linux 安装GDAL (python)
gdal-3.1.2 linux(Ubuntu) 编译 附SQLite3 PROJ6编译

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/166707.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Windows下IIS部署网站流程

IIS Internet information service 是一个web服务器 1. IIS用于windows系统 2.apache用于Linux系统,JAVA的web服务器 3.Nginx用于Linux,负责负载均衡,反向代理 安装完IIS之后,去更改DNS的指向。 DNS指向:IP 和 域名 的…

Dopamine-PEG-N3,多巴胺聚乙二醇叠氮 科研试剂用于点击化学

中文:多巴胺-聚乙二醇-叠氮 英文:Dopamine-PEG-N3,DOPA-PEG-azide 存储条件:-20C,避光,避湿 用 途:仅供科研实验使用,不用于诊治 外观: 固体或粘性液体,取决于分子量 …

3D游戏引擎系统源码C++本科毕业设计,C++ 3D引擎源码,渲染系统使用的OpenGL 及 OpenGL ES

Effective 3D Engine 渲染系统使用的OpenGL 及 OpenGL ES,Windows上OpenGL ES使用AMD的ES模拟器。 环境部署 完整代码下载地址:3D游戏引擎系统源码C本科毕业设计 Win32环境配置 编辑器 将proj_win32/RenderSystem/gles_renderSystem/GLES/dll 中的d…

【web】微信小程序笔记小结(模板与配置)

来源:黑马程序员前端微信小程序开发教程 目录 I. WXML 模板语法 ① 数据绑定 ※※ 基本原则 ※※ 在 data 中定义数据 ※※ 在 WXML 中使用数据 ※※※※ Mustache 语法的格式 ※※※※ Mustache 主要应用场景 1)动态绑定内容 2)动…

测试篇(二): 如何合理的创建bug、bug的级别、bug的生命周期、跟开发产生争执怎么办

目录一、如何合理的创建bug二、bug的等级三、bug的生命周期四、和开发产生争执怎么办一、如何合理的创建bug 创建Bug的目的就是为了能够让其他人可以尝试复现 一个合格的bug应该包含以下一个要素: 发现问题的版本 例如Web程序对应的浏览器版本,或某个应…

AutoLISP 演练(一)

一、输入左下角点、矩形宽、矩形高后,自动的将图形依所给的条件画出二、变量约定本程序所需的AutoLisp功能函数(setq 变量名 变量值) ⬅ 设定变量值(getpoint [基点] [提示]) ⬅ 请求参考基点输入一个点坐标(getreal […

PyTorch中contiguous、view、Sequential、permute函数的用法

在pytorch中,tensor的实际数据以一维数组(storage)的形式存储于某个连续的内存中,以“行优先”进行存储。 1. tensor的连续性 tensor连续(contiguous)是指tensor的storage元素排列顺序与其按行优先时的元素…

【前端】列表页点进某个详情页,详情页可按顺序跳转到上一条/下一条的实现思路(2种)

需求概述 列表页展示列表,点击某个列表可以跳转到对应的详情页,点击上一页下一页可以按列表顺序跳转到对应详情页。比如点击列表2进入到详情2,我点上一页可以跳转到详情1,点击下一页可以跳转到详情3。难点:详情页如何…

Http客户端 Feign 的使用 (黑马springcloud笔记)

Feign基本使用 目录Feign基本使用一、Feign代替RestTemplate二、自定义配置三、Feign使用优化1. 底层优化2. 日志优化四、最佳实践方式一&#xff1a;继承方式二&#xff1a;抽取一、Feign代替RestTemplate 步骤&#xff1a; 引入依赖 <dependency><groupId>org.s…

UITableView内输入框(UITextView)换行

业务描述&#xff1a; UITableView内存在一个Cell&#xff0c;该Cell内有一输入框可以输入文字&#xff0c;超出输入框宽度则换行展示&#xff0c;即该Cell高度要增加 如图&#xff1a; 解决方法&#xff1a; 思路&#xff1a; 1:取到最大输入框宽度 2:计算当前文字宽度与最…

QT自定义控件工程结构框架

目录前言一、cutewidgets是什么&#xff1f;二、工程结构三、框架的工程配置1 cutewidgets.pro2 cutewidgets.pri2.1 cutewidgetsconfig.pri2.2 cutewidgetsfunctions.pri2.3 cutewidgetsbuild.pri四、源码1 src1.1 src.pro1.2 cutewidgets_global.h1.3 testedit1.4 扩展2 exam…

互联网中断检测技术窥览与讨论

前言&#xff1a; 如其他人造系统一样&#xff0c;互联网的运行也会出现异常甚至中断。仅在2022年就发生了多起影响重大的互联网中断事件&#xff1a;1月15日汤加火山喷发三个小时后&#xff0c;全国断网&#xff0c;和外界的所有电话与网络联系都无法接通&#xff1b;3月28日…

系统分析师案例必备知识点汇总---2023系列文章二

需求获取 1、需求获取的技术&#xff1a; 用户访谈 优点&#xff1a;具有良好的灵活性&#xff0c;有较宽广的应用范围。 缺点是&#xff1a;用户忙&#xff0c;信息量大&#xff0c;记录困难&#xff0c;需要沟通技巧。 问卷调查 优点&#xff1a;短时间内收集数据。 缺点…

Python aiohttp 库是否值得学?那必须要掌握呀

aiohttp 是一个基于 asyncio 的异步 HTTP 客户端/服务器库。它提供了一组用于编写高性能异步网络应用程序的工具&#xff0c;包括基于协程的客户端和服务器。 库的安装使用 pip install aiohttp Python aiohttp 库通过 aiohttp 搭建服务器aiohttp 路由aiohttp 中间件aiohttp 发…

【机器学习之模型融合】Blending混合法

前言 Stacking堆叠法基础知识&#xff1a;http://t.csdn.cn/dzAna 1、Blending的基本思想与流程&#x1f47f; Blending融合是在Stacking融合的基础上改进过后的算法。在之前的课程中我们提到&#xff0c;堆叠法stacking在level 1上使用算法&#xff0c;这可以令融合本身向着损…

好家伙,这几个隐藏功能,太香了

很多小伙伴可能被小畅的问题搞糊涂了&#xff0c;因为很多人只会在电脑上堆砌各种小应用&#xff0c;而忽略了Windows原有的实用功能。 而我们也千万不要小看这些功能&#xff0c;它们说不定能在关键时刻助你一臂之力&#xff0c;帮到你不少忙呢&#xff01; 那么今天小畅就为大…

MobaXterm连接出现 Network error: Connection timed out 问题解决

MobaXterm连接出现 Network error: Connection timed out&#xff1a; 接前文&#xff1a;CentOS安装, 点此查看文章&#xff0c;安装之后的SSH连接&#xff1a; 解决思路如下&#xff1a; 1、检查虚拟机端是否安装ssh 一般情况是可以自动安装的&#xff0c;直接在终端输入s…

系统分析师案例必备知识点汇总---2023系列文章一

一、系统规划 (视频内容&#xff1a;系统分析师-专业知识模块中的系统规划视频) 1 、可行性研究 经济可行性 技术可行性 法律可行性 用户使用可行性 也称为投资收益分析 或成本效益分析&#xff0c;主 要评估项目的建设成 本、运行成本和项目 建成后可能的经济收 益。 技…

eggjs框架源码解读

文章目录前言Egg进程模型Egg应用程序结构egg运行启动的内幕加载插件扩展内置对象加载中间件加载service加载路由加载配置设置应用信息执行业务逻辑文件加载机制结语前言 eggjs 是阿里在 Nodejs 技术上的一大杰作&#xff0c;也是对开源世界的一大贡献。里面包含了很多技术结晶…

Linux---进程概念

目录 1. 什么是进程&#xff1f; 2. 描述进程---PCB task_struct---PCB的一种 task_ struct内容分类 3. 组织进程 4. 查看进程 通过系统调用获取进程标示符 通过系统调用创建进程---fork初识 1. 什么是进程&#xff1f; 其实&#xff0c;我们启动一个软件&#xf…