不同ARM交叉编译工具链区别 “arm生态发展与交叉编译工具链选择”一文对ARM交叉编译工具链介绍得比较详细,以下引用该文章“交叉编译链选择”部分内容,更多详细介绍请查看原文 免费版目前有三大主流工具商提供,第一是GNU(提供源码,自行编译制作),第二是****Codesourcery,第三是Linora。 收费版有ARM原厂提供的armcc、IAR提供的编译器等等,因为这些价格都比较昂贵,不适合学习用户使用,所以不做讲述。 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芯片程序。 安装交叉编译工具链 访问Linaro官网下载最新的适合我们机器的交叉工具链版本,由于我使用的是Windows所以选择下载mingw32版本 解压交叉编译工具链到合适的位置 设置环境变量。把工具链bin目录的路径加入path环境变量 配置Rust环境 运行命令rustup target add aarch64-unknown-linux-gnu,添加aarch64-unknown-linux-gnu rust toolchain到系统 修改cargo的config文件,配置新的目标架构 1 2 [target.aarch64-unknown-linux-gnu] linker = "aarch64-linux-gnu-gcc" 最后cargo build时需要添加参数--target aarch64-unknown-linux-gnu 。若是想要省略该参数则需要对config作如下的修改,以改变默认的构建目标 1 2 [build] target = "aarch64-unknown-linux-gnu" 另外,也可以给build --target aarch64-unknown-linux-gnu 命令设置别名从而缩短构建命令。比如按下面的方式修改config文件后,就可以使用cargo build_aarch64来构建程序了 1 2 [alias] build_aarch64 = "build --target aarch64-unknown-linux-gnu" 至此,我们就得到了适用于aarch64-unknown-linux环境的二进制可执行目标文件……

阅读全文