当前位置: 首页 > news >正文

GCC:Linux x86_64 编译 Linux aarch64 上运行的程序


更多内容:XiaoJ的知识星球


目录

  • 1.编译知识介绍:
  • 2.交叉编译工具链安装使用
    • 2.1 apt安装
    • 2.2 arm官网安装
  • 3.交叉编译C/C++程序(主机上运行)
  • 4.运行(arm64上运行)


本文,将介绍在Linux x86_64平台编译在Linux aarch64(ARM64)上能运行的C/C++程序。即:

  • 编译器运行在X86_64架构平台上,编译生成Linux aarch64(ARM64)架构的可执行程序。

1.编译知识介绍:

编译类型:

  • 编译器和目标程序都是相同架构的编译过程,被称为 本地编译

  • 编译器和目标程序运行在不同架构的编译过程,被称为 交叉编译

编译工具链命名:如 gcc-arm-xxx-x86_64-aarch64-none-linux-gnu:

  • gcc-arm-xxx: 表示ARM 架构工具链。

  • x86_64: 工具链的目标平台。

  • aarch64: 生成的可执行文件或目标代码的目标架构,默认采用小端字节序。

  • none: 表示没特定的操作系统相关组件,该工具链是为嵌入式系统或特定目标架构而构建的,而不是针对特定的操作系统。

  • linux-gnu: 表示生成的可执行文件或目标代码适用于 Linux 系统,并使用 GNU C 库(glibc)作为默认的 C 库。

2.交叉编译工具链安装使用

安装交叉编译工具链有如下三种方式:

  • Ubuntu下使用apt工具安装。

  • 下载第三方制作好的工具链,如arm官网、Linaro等等。

  • 使用crosstool-ng根据需要自己制作(过程复杂,不推荐)。

2.1 apt安装

#在主机上执行如下命令
sudo apt install gcc-aarch64-linux-gnu#安装完成后使用如下命令查看版本
aarch64-linux-gnu-gcc -v

2.2 arm官网安装

可以到arm官网下载编译链压缩包。

官网为:https://developer.arm.com/downloads/-/gnu-a

# 下载
wget https://developer.arm.com/-/media/Files/downloads/gnu-a/10.2-2020.11/binrel/gcc-arm-10.2-2020.11-x86_64-aarch64-none-linux-gnu.tar.xz?revision=972019b5-912f-4ae6-864a-f61f570e2e7e&rev=972019b5912f4ae6864af61f570e2e7e&hash=90B272942CAC63CBE2787E5F43E7B2C6D0AB20D6#解压
tar xvf gcc-arm-10.2-2020.11-x86_64-aarch64-none-linux-gnu.tar.xz gcc-arm-10.2-2020.11-x86_64-aarch64-none-linux-gnu/
#查看编译工具
ls gcc-arm-10.2-2020.11-x86_64-aarch64-none-linux-gnu/bin/#导出环境变量
export PATH=<you_path>/gcc-arm-10.2-2020.11-x86_64-aarch64-none-linux-gnu/bin:$PATH#查看编译器信息
aarch64-none-linux-gnu-gcc -v

3.交叉编译C/C++程序(主机上运行)

安装好交叉编译器后,直接使用它对程序进行交叉编译即可。

# 在主机上运行# 在main.c程序所在的目录执行如下命令
aarch64-none-linux-gnu-gcc main.c –o main.elf
# 或
aarch64-none-linux-gnu-g++ main.cpp –o main.elf# readelf工具来查看具体的程序信息
readelf -a main.elf

4.运行(arm64上运行)

#执行主机编译的arm64平台程序./main.elf

声明:资源可能存在第三方来源,若有侵权请联系删除!

相关文章:

  • 限免开关实施版本保护措施,保证项目灰度发布安全
  • 【Python】--装饰器
  • FoMo 数据集是一个专注于机器人在季节性积雪变化环境中的导航数据集,记录了不同季节(无雪、浅雪、深雪)下的传感器数据和轨迹信息。
  • Python生活手册-Numpy多维数组构建:从快递分拣到智能家居的数据变形术
  • 美妆集合体验馆的「AI 焕新」:从人工到智能管理的蜕变
  • [蓝桥杯 2025 省 B] 水质检测(暴力 )
  • [前端]Javascript获取元素宽度
  • 【中间件】brpc_基础_栈管理
  • android-ndk开发(8): ndk 和 clang 版本对照表
  • 遨游科普:2025年,三防平板有多智能?
  • 【coze】意图识别(售前售后问题、搜索引擎去广告)
  • DVWA靶场保姆级通关教程--03CSRF跨站请求伪造
  • 学习groovy知识点总结
  • Qt国际化实战--精通Qt Linguist工具链
  • Spring Boot Starter简介-笔记
  • Android 开发中JDK 的使用和配置详解
  • 通过 ModernBERT 实现零样本分类的性能提升
  • DeepSeek部署实战指南:从环境搭建到企业级优化
  • 【Pandas】pandas DataFrame agg
  • 《数据分析与可视化》(清华)ch-6 作业 三、绘图题
  • 自然资源部印发地理信息数据分类分级指南
  • 吴清:加强监管的同时传递监管温度,尽力帮助受影响企业应对美加征关税的冲击
  • 潘功胜:央行将设立5000亿元服务消费与养老再贷款
  • 六大车企一季报:比亚迪近92亿净利稳居第一,多家车企营收下滑
  • 预告:央行等部门将发声,介绍“一揽子金融政策支持稳市场稳预期”有关情况
  • 今年五一档电影票房已破7亿