GEOS/GDAL 交叉编译ARM64-linux版本

目录

  • 安装编译环境
  • 编译PROJ.4
  • 编译GEOS
  • 编译GDAL

因为试用华为云ARM64服务器的时候,在云服务器上编译GDAL很长时间也没有编译完,所以先交叉编译适合版本的GDAL丢上去做测试。
以下都是在CentOS 7 x86_64 环境下进行的,Linux内核版本3.10。

安装编译环境

1、下载安装编译器

# 这里可以去 https://developer.arm.com/tools-and-software/ 网站找
# 注意:要安装arm-none-linux-gnueabi-gcc,这个是编译linux程序的
# 不能安装arm-none-abi-gcc版本,这个是针对裸机程序的
wget https://developer.arm.com/-/media/Files/downloads/gnu-a/8.3-2019.03/binrel/gcc-arm-8.3-2019.03-x86_64-aarch64-linux-gnu.tar.xz
# 上面地址是小端序的,大端序版本地址: https://developer.arm.com/-/media/Files/downloads/gnu-a/8.3-2019.03/binrel/gcc-arm-8.3-2019.03-x86_64-aarch64_be-linux-gnu.tar.xz

# 解压
tar -xJf gcc-arm-8.3-2019.03-x86_64-aarch64-linux-gnu.tar.xz -C /opt/gcc-arm-8.3-x86_64-aarch64-linux
# 导入环境变量中去
export PATH=${PATH}:/opt/gcc-arm-8.3-x86_64-aarch64-linux

编译PROJ.4

git clone -b 4.9 --depth 1 https://github.com/OSGeo/PROJ.git proj.4
# 因为configure默认设置CC为gcc,所以这边必须先设置
export CC=aarch-linux-gun-gcc
export CC=aarch-linux-gun-gcc
# 生成Makefile
./configure --build=x86_64-pc-linux-gnu --host=aarch64-linux --target=aarch64-linux  --prefix=/home/test/arm64/install
# 编译安装
make && make install
# 查看下编译的对不对
file src/.libs/libproj.so.0.8.0                                                                   src/.libs/libproj.so.0.8.0: ELF 64-bit LSB shared object, ARM aarch64, version 1 (SYSV), dynamically linked, not stripped

编译GEOS

# 我这里只是需要编译一下,就不克隆全部了
git clone -b svn-3.6 --depth 1 https://github.com/libgeos/geos.git

mkdir geos/build && cd geos/build

# 执行cmake,生成Makefile。指定使用的编译器和查找头文件和库文件的根目录
# 参考 CMake设置arm-linux-gcc交叉编译器 https://www.cnblogs.com/rickyk/p/3875334.html
cmake3 .. -DCMAKE_C_COMPILER=aarch64-linux-gnu-gcc -DCMAKE_CXX_COMPILER=aarch64-linux-gnu-g++ -DCMAKE_FIND_ROOT_PATH=/opt/gcc-arm-8.3-x86_64-aarch64-linux -DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY=ONLY -DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=ONLY -DCMAKE_INSTALL_PREFIX=/home/test/arm64/install
# 编译
make && make install
# 查看下编译的对不对
file lib/libgeos_c.so.1.10.4
lib/libgeos_c.so.1.10.4: ELF 64-bit LSB shared object, ARM aarch64, version 1 (GNU/Linux), dynamically linked, not stripped

编译GDAL

git clone -b v2.4.0 --depth 1 https://github.com/OSGeo/gdal.git
cd gdal/gdal
# 生成Makefile(实际是GDALMake.opt)
./configure --build=x86_64-pc-linux-gnu --host=aarch64-linux --target=aarch64-linux  --prefix=/home/test/arm64/install
# 开始我添加 --with-geos=./geos-config(这个脚本在geos的编译目录下的tools目录中),结果还是没有用
#   只能运行完成之后打开GDALmake.opt文件进行修改
#   找到 GEOS Suport 和 PROJ.4 stuff 位置,修改内容入下面的图中所示
# 然后对 apps/GNUmakefile 文件也进行修改
#   把其中的 LNK_FLAGS 变量中追加 $(LIBS)

# 编译安装
make && make install

原文地址:https://www.cnblogs.com/oloroso/p/11129708.html

时间: 2024-08-05 01:21:30

GEOS/GDAL 交叉编译ARM64-linux版本的相关文章

Linux 版本与虚拟机的选择

一.选择合适的 Linux 版本建议: 1.Linux 桌面系统,首选Ubuntu: 2.服务器端的 Linux 系统,首选 RHEL 或 CentOS,这两者当中首选 CentOS, 如果不考虑成本也可以选 RHEL,RHEL 有版权,CentOS 则无版权: 3.如果对安全要求很高,可以选择 Debian 或 FreeBSD: 4.需要使用数据库高级服务和电子邮件网络应用的用户可以选择SUSE(德国用的多): 5.新技术,新功能,可以选择 Fedora,是 RHEL 和 CentOS 的一个

使用VS+VisualGDB编译Linux版本RCF(相当于Linux也有COM版本了)

阅读目录 通过向导配置项目 配置目录结构 修改项目配置 添加RCF源代码 完成配置并进行编译 添加测试程序 添加测试代码——通过TCP进行通信 运行测试程序并查看测试结果 VisualGDB生成的所有Makefile代码 RPC通信框架——RCF介绍中说了,RCF本身是支持跨平台的,其代码放到Linux平台,是可以通过gcc.make等工具,编译通过的. 官方提供的源码中,只有cmake编译脚本,并没有提供Makefile,如果想直接使用make编译,就必须自己写Makefile. 抛开这些不说

Ubuntu下查看linux版本,内核版本,系统位数,gcc版本

1. 查看linux版本  [email protected]:~$cat /etc/issueUbuntu 11.04 \n \l 2. 查看内核版本1) [email protected]:~$ cat /proc/versionLinux version 2.6.38-13-generic ([email protected]) (gcc version 4.5.2 (Ubuntu/Linaro 4.5.2-8ubuntu4) ) #57-Ubuntu SMP Mon Mar 5 18:1

常见Linux版本

一 常见Linux版本 website feature description http://www.ubuntu.com/ 当前最流行 Ubuntu 正是基于 Debian 之上,旨在创建一个可以为桌面和服务器提供一个最新且一贯的 Linux 系统.Ubuntu 囊括了大量精挑细选自 Debian 发行版的软件包,同时保留了 Debian 强大的软件包管理系统,以便简易的安装或彻底的删除程序.与大多数发行版附带数量巨大的可用可不用的软件不同,Ubuntu 的软件包清单只包含那些高质量的重要应用

最稳定 性能最好 的 Linux 版本?

Ubuntu太他妈不稳定了,简直是一坨屎 CentOS.Ubuntu.Debian三个linux比较异同http://blog.csdn.net/educast/article/details/38315433/ 1.FreeBSD , OpenBSD, PCBSD , Mac OS (其中Mac OS最稳定)...BSD系是最稳定的,Unix内核比傻逼Linux内核他妈稳定多了! 2.CentOS, Scientific Linux, Red Hat...(前两者的代码基于后者,有企业级的表现

运用Python语言编写获取Linux基本系统信息(一):获得Linux版本、内核、当前时间

申请博客有一段时间了,然而到现在还一篇没有写过..... 主要因为没有想到需要写些什么,最近在学习Python语言,照着书上看了看最基础的东西,发现根本看不进去,而且光看的话今天看了觉得都理解懂了,过两天自己回顾这部分内容的时候发现就又忘了,于是自己就想到自己边学边写一些小程序,以便能更好的让自己记住语法. 一.开发环境以及测试环境 Python2.7.10.pycharm.VM虚拟机.CentOS6.3 二.代码实现 代码结构: commands.py —> os_info_in.py —>

【转】 如何查看linux版本 如何查看LINUX是多少位

原文网址:http://blog.csdn.net/hongweigg/article/details/7192471 一.如何得知自己正在使用的linux是什么版本呢,下面的几种方法将给你带来答案! 1. 查看内核版本命令: 1) [[email protected] ~]# cat /proc/version Linux version 2.6.9-22.ELsmp ([email protected]) (gcc version 3.4.4 20050721 (Red Hat 3.4.4-

使用VS+VisualGDB编译Linux版本RCF

RPC通信框架--RCF介绍中说了,RCF本身是支持跨平台的,其代码放到Linux平台,是可以通过gcc.make等工具,编译通过的. 官方提供的源码中,只有cmake编译脚本,并没有提供Makefile,如果想直接使用make编译,就必须自己写Makefile. 抛开这些不说,本文主要介绍在Windows系统上,通过VS与VisualGDB来完成Linux版本的RCF库的编译和调试. 使用VS+VisualGDB编译调试Linux程序 ,文中已经简单介绍了VisualGDB的用法,本文直奔主题

[JIRA] 最新Linux版本 jira6.3.6安装汉化破解以及数据迁移

序言: JIRA是澳大利亚 Atlassian 公司开发的一款优秀的问题跟踪管理软件工具,可以对各种类型的问题进行跟踪管理,包括缺陷.任务.需求.改进等.JIRA采用J2EE技术,能够跨平台部署.它正被广泛的开源软件组织,以及全球著名的公司使用. JIRA产品非常完善且功能强大,安装配置简单,多语言支持.界面十分友好,和其他系统如CVS.Subversion(SVN).VSS.LDAP.邮件服务整合得相当好,文档齐全,可用性以及可扩展性方面都十分出色,拥有完整的用户权限管理. 环境:jira软件