在从事嵌入式软件开发时,常常遇到不同的平台需要移植一些测试程序。本文目的:掌握交叉编译概念;学会如何搭建相应的交叉编译环境。
1、交叉编译工具链(cross compilation tool chain)
交叉编译通俗地讲就是在一种平台上编译出能运行在体系结构不同的另一种平台上的程序。交叉编译工具链解决本地编译的局限性,主要原因是开发平台的多样性,导致编译工具(软件硬件)以及编译方式等的不同,本地开发的程序无法在其他平台运行。只需要在主机平台上安装对应的交叉编译工具链,然后用这个交叉编译工具链编译我们的源代码,最终生成可在目标平台上运行的代码。
几种交叉编译工具链:
arm-none-linux-gnueabi-gcc、arm-linux-gnueabihf-gcc、aarch64-linux-gnu-gcc、arm-none-elf-gcc、arm-none-eabi-gcc
arm-none-linux-gnueabi-gcc 下载地址
2、交叉编译工具安装及环境变量配置
参考以Linaro为例:
(1)首先在/usr/local/目录下新建名为 ARM-toolchain的文件夹用于存放交叉编译工具链。
mkdir /usr/local/ARM-toolchain
(2)接下来就是安装交叉编译工具链
cd /usr/local/ARM-toolchain
sudo wget http://releases.linaro.org/components/toolchain/binaries/6.1-2016.08/ar-m-linux-gnueabi/gcc-linaro-6.1.1-2016.08-x86_64_arm-linux-gnueabi.tar.xz
xz -d gcc-linaro-6.1.1-2016.08-x86_64_arm-linux-gnueabi.tar.xz
tar xvf gcc-linaro-6.1.1-2016.08-x86_64_arm-linux-gnueabi.tar
Tips:
①有网络的情况下,用wget下载交叉编译工具链的包;没网络就老实的自己拷贝过来吧。
②xz -d 命令是用来将tar.xz文件转为tar文件的,如果系统没有xz命令,那请安装吧,任意门---Linux下.tar.xz文件的解压教程详解
(3)接下来需要把交叉编译工具链的路径添加到Linux系统的环境变量中
三种设置环境变量方式
(1)设置临时变量---终端直接输入,退出之后就没得了(不建议)
export PATH="/usr/local/ARM-toolchain/gcc-linaro-6.1.1-2016.08-x86_64_arm-linux-gnueabi/bin:$PATH"
(2)设置当前用户环境变量
vi ~/.bash_profile
vi ~/.bashrc
编辑当前用户的两个文件任意一个即可,在其末行加入①的变量
保存后执行,让环境变量立即生效。
source ~/.bashrc # (or .profile)
(3)设置环境变量,对所有用户适用,PATH设置同上
vi /etc/profile
3、查看arm-gcc是否安装,我们可以在终端执行 arm-linux-gnueabi-gcc –v 命令来查看交叉编译工具链的版本信息。
下面这部分来记录一下自己在QT开发时,需要将开发的界面移植到不同的平台运行。
①QtCreator添加arm-gcc交叉编译工具链
②添加kits