从linaro下载安装二进制文件安装交叉编译工具
安装交叉编译工具链的方法有很多种,这里记录下直接从linaro下载安装二进制的编译工具方法。
确定自己要安装的工具链版本
工具链下载地址:https://releases.linaro.org/components/toolchain/binaries/
具体可以咨询自己用的芯片的生产商,其中带be的是大端模式的。以7.5.0的linux-gun为例:linuxhttps://releases.linaro.org/components/toolchain/binaries/7.5-2019.12/aarch64-linux-gnu/
linaro提供的文件和作用
- 上图中①的部分就是编译器的主体,是要放在进行程序编译的主机上的, 选择自己主机对应架构的工具链,比如我是x86架构的就下载gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar.xz,解压到主机上,配置环境变量:
$ export PATH=/home/likejiang/5G_NR/gcc-1inaro-7.5.0-2019.12-x86_64_aarch64-1inux-gnu/bin:$PATH
$ aarch-linux-gun-gcc -v
参数返回正常就安装成功了。
交叉编译工具安装成功后一些简单的程序就能交叉编译了,下面介绍下linaro提供的其它部分 - 上图中①的部分是运行时库,顾名思义就是编译出来的程序运行时需要的库,是要放到程序运行的目标板卡上的,其中包含一组使用工具链构建的应用程序在运行时可能需要的共享库。如果芯片厂商已经提供移植好的操作系统了,一般情况下是不需要我们自己添加的。
- 上图中①的部分是sysroot,称为逻辑根目录,是要和交叉编译工具一起放到编译主机上的,在交叉编译时可以通过–sysroot指定搜索库文件(例如 crt*, libgcc.a)的根路径,网上关于sysroot的讲解很多,不多赘述了。
如果新版的编译器同时使用了–sysroot和-isystem会导致出现 cstdlib:fatal error:stdlib.h :No such file or directiry 报错,可以参考下这篇文章:
#include_next 导致 cstdlib:fatal error:stdlib.h :No such file or directiry