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中结构体的初始化 结构体是一个由程序员定义的数据类型,可以容纳许多不同的数据值。在过去,面向对象编程的应用尚未普及之前,程序员通常使用这些从逻辑上连接在一起的数据组合到一个单元中。一旦结构体类型被声明并且其数据成员被标识&…...
k8s从入门到放弃之Ingress七层负载
k8s从入门到放弃之Ingress七层负载 在Kubernetes(简称K8s)中,Ingress是一个API对象,它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress,你可…...
pam_env.so模块配置解析
在PAM(Pluggable Authentication Modules)配置中, /etc/pam.d/su 文件相关配置含义如下: 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块,负责验证用户身份&am…...

【单片机期末】单片机系统设计
主要内容:系统状态机,系统时基,系统需求分析,系统构建,系统状态流图 一、题目要求 二、绘制系统状态流图 题目:根据上述描述绘制系统状态流图,注明状态转移条件及方向。 三、利用定时器产生时…...
C++中string流知识详解和示例
一、概览与类体系 C 提供三种基于内存字符串的流,定义在 <sstream> 中: std::istringstream:输入流,从已有字符串中读取并解析。std::ostringstream:输出流,向内部缓冲区写入内容,最终取…...

NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合
在汽车智能化的汹涌浪潮中,车辆不再仅仅是传统的交通工具,而是逐步演变为高度智能的移动终端。这一转变的核心支撑,来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒(T-Box)方案:NXP S32K146 与…...
【学习笔记】erase 删除顺序迭代器后迭代器失效的解决方案
目录 使用 erase 返回值继续迭代使用索引进行遍历 我们知道类似 vector 的顺序迭代器被删除后,迭代器会失效,因为顺序迭代器在内存中是连续存储的,元素删除后,后续元素会前移。 但一些场景中,我们又需要在执行删除操作…...

【Post-process】【VBA】ETABS VBA FrameObj.GetNameList and write to EXCEL
ETABS API实战:导出框架元素数据到Excel 在结构工程师的日常工作中,经常需要从ETABS模型中提取框架元素信息进行后续分析。手动复制粘贴不仅耗时,还容易出错。今天我们来用简单的VBA代码实现自动化导出。 🎯 我们要实现什么? 一键点击,就能将ETABS中所有框架元素的基…...

若依登录用户名和密码加密
/*** 获取公钥:前端用来密码加密* return*/GetMapping("/getPublicKey")public RSAUtil.RSAKeyPair getPublicKey() {return RSAUtil.rsaKeyPair();}新建RSAUti.Java package com.ruoyi.common.utils;import org.apache.commons.codec.binary.Base64; im…...
React父子组件通信:Props怎么用?如何从父组件向子组件传递数据?
系列回顾: 在上一篇《React核心概念:State是什么?》中,我们学习了如何使用useState让一个组件拥有自己的内部数据(State),并通过一个计数器案例,实现了组件的自我更新。这很棒&#…...

Qt的学习(二)
1. 创建Hello Word 两种方式,实现helloworld: 1.通过图形化的方式,在界面上创建出一个控件,显示helloworld 2.通过纯代码的方式,通过编写代码,在界面上创建控件, 显示hello world; …...