Ubuntu源码编译gdal3.6.2
在华为云申请了一台Ubuntu v18的机器,乱七八糟的不要装。
apt install build-essential pkg-config -y
cmake-3.21.1
apt-get install openssl libssl-dev
过程参考:Yukon for PostgreSQL_格來羙、日出的博客-CSDN博客
zlib-1.2.9(不需要)
如果用系统的后面gdal会提示inflateValidate@ZLIB_1.2.9
看了下原因,apt安装的是1.2.11。说明版本对应有问题。
我也尝试把zlib的pkgconfig/lib/include拷贝出来,不过依旧报错(gdal文件夹删了重新编)。
zlib Home Site
wget https://codeload.github.com/madler/zlib/zip/refs/tags/v1.2.9
#下载后文件名称不对,对的话可以不改
mv v1.2.9 v1.2.9.zip
unzip v1.2.9.zip
cd zlib-1.2.9
./configure --prefix=/usr/local/zlib-1.2.9
make && make install#先备份,然后把这里都删了,因为不删后面还是用1.2.11的包,然而apt卸载不掉
cp /lib/aarch64-linux-gnu/libz.so.1.2.11 /opt
rm -rf /lib/aarch64-linux-gnu/libz*
ln -s -f /usr/local/zlib-1.2.9/lib/libz.so.1.2.9 /lib/aarch64-linux-gnu/libz.so.1
libtiff
Index of /libtiff/ (osgeo.org)
undefined reference to `TIFFReadDirectory@LIBTIFF_4.0‘
要自己编译,不然gdal会报TIFFReadDirectory@LIBTIFF_4.0
apt remove libtiff5
#可以先尝试编译下,使用build是迫不得已,提示选择平台
wget http://download.osgeo.org/libtiff/tiff-4.0.9.zip
./configure --prefix=/usr/local/tiff-4.0.9 \
--build=aarch64-unknown-linux-gnu
make && make install
#虽然版本不对应,zlib1g-dev对应的是1.2.11,但是用到了一些头文件
apt install zlib1g-dev
#可以先尝试编译下,使用build是迫不得已,提示选择平台
./configure --prefix=/usr/local/tiff-4.0.9 \
--with-zlib-include-dir=/usr/local/zlib-1.2.9/include \
--with-zlib-lib-dir=/usr/local/zlib-1.2.9/lib/libz.so.1.2.9 \
--build=aarch64-unknown-linux-gnu
环境变量
/etc/profile
#tiff
export TIFF_HOME=/usr/local/tiff-4.0.9
export TIFF_CFLAGS=$TIFF_HOME/include
export TIFF_LIBS=$TIFF_HOME/lib/pkgconfig
export PKG_CONFIG_PATH=$TIFF_LIBS:$PKG_CONFIG_PATH/etc/ld.so.conf
/usr/local/tiff-4.0.9/lib
curl-7.29.0(不需要)
curl downloads
要自己编译,GDAL编译会报错 curl_mime_init@CURL_GNUTLS_3
事先声明,curl这种编译方法会不全,需要更详细看官网
apt install libcurl4 libcurl4-openssl-dev curl wget https://curl.se/download/archeology/curl-7.29.0.tar.gz
./configure --prefix=/usr/local/curl-7.29.0
#--with-zlib=/usr/local/zlib-1.2.9
make && make install
proj-9.2.1
wget https://codeload.github.com/OSGeo/PROJ/zip/refs/tags/9.2.1
cmake .. -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=/usr/local/proj-9.2.1 \
-DSQLITE3_INCLUDE_DIR=/usr/local/sqlite3400000/include \
-DSQLITE3_LIBRARY=/usr/local/sqlite3400000/lib/libsqlite3.so \
-DTIFF_INCLUDE_DIR=/usr/local/tiff-4.0.9/include \
-DTIFF_LIBRARY=/usr/local/tiff-4.0.9/lib/libtiff.so \
-DBUILD_TESTING=OFF
编译前环境
#cmake
export CMAKE_HOME=/usr/local/cmake-3.21.1
export PATH=$CMAKE_HOME/bin:$PATH
#sqlite
export SQLITE_HOME=/usr/local/sqlite3400000
export PATH=$SQLITE_HOME/bin:$PATH
export PKG_CONFIG_PATH=$SQLITE_HOME/lib/pkgconfig:$PKG_CONFIG_PATH
#tiff
export TIFF_HOME=/usr/local/tiff-4.0.9
export TIFF_CFLAGS=$TIFF_HOME/include
export TIFF_LIBS=$TIFF_HOME/lib/pkgconfig
export PKG_CONFIG_PATH=$TIFF_LIBS:$PKG_CONFIG_PATH
#curl
#export CURL_HOME=/usr/local/curl-7.29.0
#export CURL_CFLAGS=$TIFF_HOME/include
#export CURL_LIBS=$TIFF_HOME/lib/pkgconfig
#export PKG_CONFIG_PATH=$CURL_LIBS:$PKG_CONFIG_PATH
#proj
export PROJ_HOME=/usr/local/proj-9.2.1
export PKG_CONFIG_PATH=$PROJ_HOME/lib/pkgconfig:$PKG_CONFIG_PATH
/usr/local/tiff-4.0.9/lib
/usr/local/sqlite3400000/lib
/usr/local/freexl-2.0.0/lib
/usr/local/proj-9.2.1/lib
gdal-3.6.2
#如果有highgo库,把libz依赖移走,会和gdal的libz冲突
mv /opt/highgo/hgdb-see-4.5.8/lib/libz.so.1 /opt/cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local/gdal-3.6.2 \
-DBUILD_TESTING=OFF \
-DTIFF_INCLUDE_DIR=/usr/local/tiff-4.0.9/include \
-DTIFF_LIBRARY=/usr/local/tiff-4.0.9/lib/libtiff.so \
-DSQLite3_INCLUDE_DIR=/usr/local/sqlite3400000/include \
-DSQLite3_LIBRARY=/usr/local/sqlite3400000/lib/libsqlite3.so \#支持xls文件格式
-DFREEXL_INCLUDE_DIR=/usr/local/freexl-2.0.0/include \
-DFREEXL_LIBRARY=/usr/local/freexl-2.0.0/lib/libfreexl.so #支持pg,可选项
-DOGR_ENABLE_DRIVER_PG=ON \
-DPostgreSQL_INCLUDE_DIR=/opt/highgo/hgdb-see-4.5.8/include \
-DPostgreSQL_LIBRARY=/opt/highgo/hgdb-see-4.5.8/lib/libpq.so #如果上面不装zlib,这里不需要
-DZLIB_INCLUDE_DIR=/usr/local/zlib-1.2.9/include
-DZLIB_LIBRARY=/usr/local/zlib-1.2.9/lib/libz.so.1.2.9
-DPROJ_INCLUDE_DIR=/usr/local/proj-9.2.1/include
-DPROJ_LIBRARY=/usr/local/proj-9.2.1/lib/libproj.so.25.9.2.1Manually-specified variables were not used by the project:
PROJ_INCLUDE_DIR
PROJ_LIBRARY
PROJ is detected in priority through CMake config files, in which case PROJ_INCLUDE_DIR and PROJ_LIBRARY_RELEASE will be ignored.
官方回复:通过 CMake 配置文件优先检测 PROJ,在这种情况下 PROJ_INCLUDE_DIR 和 PROJ_LIBRARY_RELEASE 将被忽略。
配置环境
vi /etc/profile
#gdal
export GDAL_HOME=/usr/local/gdal-3.6.2
export PATH=$GDAL_HOME/bin:$PATH
export PKG_CONFIG_PATH=$GDAL_HOME/lib64/pkgconfig:$PKG_CONFIG_PATH
source /etc/profile
vi /etc/ld.so.conf
...
/usr/local/gdal-3.6.2/lib
/opt/highgo/hgdb-see-4.5.8/lib #配上libpqldconfig -v
验证 GDAL
#支持格式
ogr2ogr --formats#导入shp
ogr2ogr -f "PostgreSQL" PG:"host='127.0.0.1' dbname='highgo' user='sysdba' password='Test@123' port=5866" /opt/110m_physical/ne_110m_ocean.shp#导入xls
ogr2ogr -f "PostgreSQL" PG:"host='127.0.0.1' dbname='highgo' user='sysdba' password='Test@123' port=5866" /opt/dltbxz_tqmj.xlsx
相关文章:
Ubuntu源码编译gdal3.6.2
在华为云申请了一台Ubuntu v18的机器,乱七八糟的不要装。 apt install build-essential pkg-config -y cmake-3.21.1 apt-get install openssl libssl-dev 过程参考:Yukon for PostgreSQL_格來羙、日出的博客-CSDN博客 zlib-1.2.9(不需要) 如果用系统的后面gd…...
【LeetCode】160. 相交链表
160. 相交链表 难度:简单 题目 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。 图示两个链表在节点 c1 开始相交: 题目数据 保证 整个链式结构中…...

数据集笔记:NGSIM (next generation simulation)
1 数据集介绍 数据介绍s Next Generation Simulation (NGSIM) Open Data (transportation.gov) 数据地址:Next Generation Simulation (NGSIM) Vehicle Trajectories and Supporting Data | Department of Transportation - Data Portal 时间2005年到2006年间地…...

解决docker运行elastic服务端启动不成功
现象: 然后查看docker日志,发现有vm.max_map_count报错 ERROR: [1] bootstrap checks failed [1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144] 解决办法: 1. 宿主机(运行doc…...
mysql数据库中mysql database 数据被破坏产生的一系列问题
在执行sql脚本时,没有注意到sql脚本文件包含了对mysql 原始数据库的操作,执行了脚本。 脚本执行成功之后,登录或链接数据库查看数据时报错: The user specified as a definer (‘mysql.infoschema’‘localhost’) does not exis…...

基于变形卷积和注意机制的带钢表面缺陷快速检测网络DCAM-Net(论文阅读笔记)
原论文链接->DCAM-Net: A Rapid Detection Network for Strip Steel Surface Defects Based on Deformable Convolution and Attention Mechanism | IEEE Journals & Magazine | IEEE Xplore DCAM-Net: A Rapid Detection Network for Strip Steel Surface Defects Base…...

05-Spring Boot工程中简化开发的方式Lombok和dev-tools
简化开发的方式Lombok和dev-tools Lombok常用注解 Lombok用标签方式代替构造器、getter/setter、toString()等重复代码, 在程序编译的时候自动生成这些代码 注解名功能NoArgsConstructor生成无参构造方法AllArgsConstructor生产含所有属性的有参构造方法,如果不希望含所有属…...

AIGC 技术在淘淘秀场景的探索与实践
本文介绍了AIGC相关领域的爆发式增长,并探讨了淘宝秀秀(AI买家秀)的设计思路和技术方案。文章涵盖了图像生成、仿真形象生成和换背景方案,以及模型流程串联等关键技术。 文章还介绍了淘淘秀的使用流程和遇到的问题及处理方法。最后,文章展望…...

ANSYS网格无关性检查
网格精度对应力结果存在很大的影响,有时候可以发现,随着网格精度逐渐提高,所求得的最大应力值逐渐趋于收敛。 默认网格: 从默认网格下计算出的应力云图可以发现,出现了的三处应力奇异点,此时算出的应力值是…...

设计模式-责任链-笔记
动机(Motivation) 在软件构建过程中,一个请求可能被多个对象处理,但是每个请求在运行时只能有个接受者,如果显示指定,将必不可少地带来请求者与接受者的紧耦合。 如何使请求的发送者不需要指定具体的接受…...
SpringMvc请求原理流程
springmvc是用户和服务沟通的桥梁,官网提供了springmvc的全面使用和解释:DispatcherServlet :: Spring Framework 流程 1.Tomcat启动 2.解析web.xml文件,根据servlet-class找到DispatcherServlet,根据init-param来获取spring的…...

【开源】基于Vue.js的音乐偏好度推荐系统的设计和实现
项目编号: S 012 ,文末获取源码。 \color{red}{项目编号:S012,文末获取源码。} 项目编号:S012,文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、系统设计2.1 功能模块设计2.1.1 音乐档案模块2.1…...

采集1688整店商品(店铺所有商品、店铺列表api)
返回数据: 请求链接 {"user": [],"items": {"item": [{"num_iid": "738354436678","title": "国产正品i13 promax全网通5G安卓智能手机源头厂家批发手机","pic_url": "http…...

IObit Unlocker丨解除占用程序软件
更多内容请收藏:https://rwx.tza-3.xyz 官网:IObit Unlocker “永远不用担心电脑上无法删除的文件。” 界面简单,支持简体中文,一看就会,只需要把无法删除/移动的文件或整个U盘拖到框里就行。 解锁率很高,…...

开发一款小程序游戏需要多少钱?
小程序游戏的开发成本因多种因素而异,无法提供具体的固定数字。以下是影响小程序游戏开发成本的一些关键因素: 游戏规模和复杂度: 小程序游戏可以是简单的休闲游戏,也可以是更复杂的策略游戏。规模和复杂度会影响开发所需的时间和…...

基于Vue+SpringBoot的校园电商物流云平台开源项目
项目编号: S 034 ,文末获取源码。 \color{red}{项目编号:S034,文末获取源码。} 项目编号:S034,文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 商品数据模块2.3 快…...

庖丁解牛:NIO核心概念与机制详解 03 _ 缓冲区分配、包装和分片
文章目录 Pre概述缓冲区分配和包装 (allocate 、 wrap)缓冲区分片 (slice)缓冲区份片和数据共享只读缓冲区 (asReadOnlyBuffer)直接和间接缓冲区 (allocateDirect)内存映射文件 I/O将文件映射到内存(map) Pre 庖丁解牛࿱…...

002 OpenCV dft 傅里叶变换
目录 一、傅里叶变换 1.1 傅里叶变换概念 1.2 opencv中傅里叶变换 二、实验代码 一、环境 本文使用环境为: Windows10Python 3.9.17opencv-python 4.8.0.74 二、傅里叶变换 2.1 傅里叶变换概念 傅里叶变换(Fourier Transform)是一种…...
力扣:171. Excel 表列序号(Python3)
题目: 给你一个字符串 columnTitle ,表示 Excel 表格中的列名称。返回 该列名称对应的列序号 。 例如: A -> 1 B -> 2 C -> 3 ... Z -> 26 AA -> 27 AB -> 28 ... 来源:力扣(LeetCode) …...
C++中结构体的初始化
C中结构体的初始化 结构体是一个由程序员定义的数据类型,可以容纳许多不同的数据值。在过去,面向对象编程的应用尚未普及之前,程序员通常使用这些从逻辑上连接在一起的数据组合到一个单元中。一旦结构体类型被声明并且其数据成员被标识&…...
React Native 导航系统实战(React Navigation)
导航系统实战(React Navigation) React Navigation 是 React Native 应用中最常用的导航库之一,它提供了多种导航模式,如堆栈导航(Stack Navigator)、标签导航(Tab Navigator)和抽屉…...
在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module
1、为什么要修改 CONNECT 报文? 多租户隔离:自动为接入设备追加租户前缀,后端按 ClientID 拆分队列。零代码鉴权:将入站用户名替换为 OAuth Access-Token,后端 Broker 统一校验。灰度发布:根据 IP/地理位写…...

剑指offer20_链表中环的入口节点
链表中环的入口节点 给定一个链表,若其中包含环,则输出环的入口节点。 若其中不包含环,则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...
镜像里切换为普通用户
如果你登录远程虚拟机默认就是 root 用户,但你不希望用 root 权限运行 ns-3(这是对的,ns3 工具会拒绝 root),你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案:创建非 roo…...
工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配
AI3D视觉的工业赋能者 迁移科技成立于2017年,作为行业领先的3D工业相机及视觉系统供应商,累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成,通过稳定、易用、高回报的AI3D视觉系统,为汽车、新能源、金属制造等行…...

dify打造数据可视化图表
一、概述 在日常工作和学习中,我们经常需要和数据打交道。无论是分析报告、项目展示,还是简单的数据洞察,一个清晰直观的图表,往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server,由蚂蚁集团 AntV 团队…...

基于Java+MySQL实现(GUI)客户管理系统
客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息,对客户进行统一管理,可以把所有客户信息录入系统,进行维护和统计功能。可通过文件的方式保存相关录入数据,对…...

Golang——6、指针和结构体
指针和结构体 1、指针1.1、指针地址和指针类型1.2、指针取值1.3、new和make 2、结构体2.1、type关键字的使用2.2、结构体的定义和初始化2.3、结构体方法和接收者2.4、给任意类型添加方法2.5、结构体的匿名字段2.6、嵌套结构体2.7、嵌套匿名结构体2.8、结构体的继承 3、结构体与…...
安卓基础(Java 和 Gradle 版本)
1. 设置项目的 JDK 版本 方法1:通过 Project Structure File → Project Structure... (或按 CtrlAltShiftS) 左侧选择 SDK Location 在 Gradle Settings 部分,设置 Gradle JDK 方法2:通过 Settings File → Settings... (或 CtrlAltS)…...

PH热榜 | 2025-06-08
1. Thiings 标语:一套超过1900个免费AI生成的3D图标集合 介绍:Thiings是一个不断扩展的免费AI生成3D图标库,目前已有超过1900个图标。你可以按照主题浏览,生成自己的图标,或者下载整个图标集。所有图标都可以在个人或…...