Skip to content

LV010-工具链安装

一、ARM 交叉编译工具链

1. 下载软件包

可以在下边的地址中下载 4.9.4 版本的交叉编译工具软件包,当然自己也可以使用更高版本啦,我是为了跟教程一致,才用的老版本,以后会玩了,可能就换新了:Linaro Releases

image-20260106100723353

具体选择哪一个?我们主要是看自己开发环境,我们可以在主机中执行 uname -m命令来查看系统架构,要是输出x86_64,则是64位,输出是i686/i386就是32位的。这里我的ubuntu系统是64位,这里就选择下面x86_64版本的。下载完毕后,拷贝到自己 Ubuntu 的一个目录中:

shell
cp 2Sharedfiles/3Software/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz ~/1Software/

然后进入目录,并解压:

shell
cd ~/1Software/
tar -xvf gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz

2. 安装交叉编译器

  • (1)新建存放交叉编译工具的文件夹
shell
sudo mkdir /usr/local/arm
sudo cp -r ~/1Software/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf /usr/local/arm
  • (2)添加环境变量
shell
# 1.打开相应文件
sudo vim /etc/profile

# 2.文件结尾添加以下内容
export PATH=$PATH:/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin

# 3.重启设备,使环境变量生效(最好重启下吧)
reboot
  • (3)安装相关的库(虽然写笔记的时候还不知道有啥用)
shell
sudo apt-get install lsb-core lib32stdc++6

这个库安装的时间还是有点久的。

  • (4)验证是否成功安装交叉编译工具
shell
arm-linux-gnueabihf-gcc -v

若成功,则会显示交叉编译工具的版本,如下图所示:

image-20220512191620321

二、Poky 交叉编译工具链

这里要再安装一个 Poky 交叉编译工具链。这个主要是在后面编译 freetype 的时候出现报错了,发现用这个编译倒是没有问题。在这里补充一下安装方式吧。

[4.2 安装Poky交叉编译工具链 | 正点原子在线文档](https://wiki.alientek.com/docs/Boards/Linux/IMX6U/I.MX6U 快速体验手册/cross compiling/install_poky/)

1. 下载安装脚本

目前还没找到这个安装脚本应该从哪里下载,就先用正点原子官方的提供的资料里面的吧,路径是【正点原子】阿尔法 Linux 开发板(A 盘)-基础资料\05、开发工具\01、交叉编译器:

image-20241015072020385

2. 安装交叉编译器

执行下面的指令修改脚本的权限, 修改权限后可以看到此脚本颜色显示改变,说明修改成功。

shell
chmod 777 fsl-imx-x11-glibc-x86_64-meta-toolchain-qt5-cortexa7hf-neon-toolchain-4.1.15-2.1.0.sh

直接执行脚本安装交叉编译工具,连续敲下两次回车键确认,再输入用户密码即可。本次安装的目录为脚本所指定的默认安装的目录,后面的内核编译环境的交叉编译都是按这个安装目录去操作,所以建议用户也是默认安装到/opt/fsl-imx-x11/4.1.15-2.1.0 这个默认目录。

image-20241015001933698

使用方法也十分简单,根据上面打印出来的提示,直接使能环境变量就可以了。但是在不同终端或者切换用户时需要重新使能环境变量方可使用。

shell
source /opt/fsl-imx-x11/4.1.15-2.1.0/environment-setup-cortexa7hf-neon-poky-linux-gnueabi

使能环境变量后可以使用 env 指令查看生效的环境变量,下图为部分截图,可以看出使能了这个环境变量后 gcc 已经配置好编译时所用的参数,如硬浮点参数-mfpu = neon -mfloat-abi = hard。使用硬浮点交叉编译,可以使用 CPU 自带 FPU。 下图为环境变量部分截图。

shell
env
image-20241015002104266

使用 arm-poky-linux-gnueabi-gcc -v 指令可以查看 gcc 版本,表明环境变量已经生效。

shell
arm-poky-linux-gnueabi-gcc -v
arm-poky-linux-gnueabi-gcc --version # 这个更简洁一些
image-20241015002237204

3. 增加了哪些环境变量?

我们可以 source 前后打印一下 env 看一下,大概就是这一些差异:

image-20241015072900530