Tool-Cross-compilation-Toolchain-ARM-Linaro
Tool-Cross-compilation-Toolchain-ARM-Linaro
Ubuntu上基于Arm的交叉编译工具链。
-
arm-none-linux-gnueabi-gcc
:是 Codesourcery 公司(目前已经被Mentor收购)基于GCC推出的的ARM交叉编译工具。可用于交叉编译ARM(32位)系统中所有环节的代码,包括裸机程序、u-boot、Linux kernel、filesystem和App应用程序。 -
arm-linux-gnueabihf-gcc
:是由 Linaro 公司基于GCC推出的的ARM交叉编译工具。可用于交叉编译ARM(32位)系统中所有环节的代码,包括裸机程序、u-boot、Linux kernel、filesystem和App应用程序。 -
aarch64-linux-gnu-gcc
:是由 Linaro 公司基于GCC推出的的ARM交叉编译工具。可用于交叉编译ARMv8 64位目标中的裸机程序、u-boot、Linux kernel、filesystem和App应用程序。 -
arm-none-elf-gcc
:是 Codesourcery 公司(目前已经被Mentor收购)基于GCC推出的的ARM交叉编译工具。可用于交叉编译ARM MCU(32位)芯片,如ARM7、ARM9、Cortex-M/R芯片程序。 -
arm-none-eabi-gcc
:是 GNU 推出的的ARM交叉编译工具。可用于交叉编译ARM MCU(32位)芯片,如ARM7、ARM9、Cortex-M/R芯片程序。
命名规则: 交叉编译工具链的命名规则为:arch [-vendor] [-os] [-(gnu)eabi]
arch
– 体系架构,如ARM,MIPS(通过交叉编译工具生成的可执行文件或系统镜像的运行平台或环境)vendor
– 工具链提供商os
– 目标操作系统(host主要操作平台,也就是编译时的系统)eabi
– 嵌入式应用二进制接口(Embedded Application Binary Interface)
根据对操作系统的支持与否,ARM GCC可分为支持和不支持操作系统,如
arm-none-eabi
:这个是没有操作系统的,自然不可能支持那些跟操作系统关系密切的函数,比如fork(2)。他使用的是newlib这个专用于嵌入式系统的C库。
arm-none-linux-eabi
:用于Linux的,使用Glibc
-
gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar
-
runtime-gcc-linaro-7.5.0-2019.12-aarch64-linux-gnu.tar
-
sysroot-glibc-linaro-2.25-2019.12-aarch64-linux-gnu.tar
安装步骤:
- 解压
- 配置环境变量
- 测试gcc版本
查看编译文件适用平台:
file xx
readelf -d xx
objdump -a xx
或-f
ldd xx
CMakeList.txt
# 设置编译器和链接器的路径 set(CMAKE_C_COMPILER "/path/to/gcc") set(CMAKE_CXX_COMPILER "/path/to/g++") #set(CMAKE_LINKER "/path/to/ld")
编译参数
--sysroot
本文来自博客园,作者:Theseus‘Ship,转载请注明原文链接:https://www.cnblogs.com/yongchao/p/18302722
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)