我国酒店网站建设存在的问题,网页设计高清素材,成品短视频app下载有哪些软件好,企业网站建设ejiewUbuntu 交叉编译工具链安装
1 交叉编译器安装
ARM 裸机、Uboot 移植、Linux 移植这些都需要在 Ubuntu 下进行编译#xff0c;编译就需要编译器#xff0c;我们在第三章“Linux C 编程入门”里面已经讲解了如何在 Liux 进行 C 语言开发#xff0c;里面使用 GCC 编译器进行代…Ubuntu 交叉编译工具链安装
1 交叉编译器安装
ARM 裸机、Uboot 移植、Linux 移植这些都需要在 Ubuntu 下进行编译编译就需要编译器我们在第三章“Linux C 编程入门”里面已经讲解了如何在 Liux 进行 C 语言开发里面使用 GCC 编译器进行代码编译但是 Ubuntu 自带的 gcc 编译器是针对 X86 架构的而我们现在要编译的是 ARM 架构的代码所以我们需要一个在 X86 架构的 PC 上运行可以编译 ARM 架构代码的 GCC 编译器这个编译器就叫做交叉编译器总结一下交叉编译器就是 1、它肯定是一个 GCC 编译器。 2、这个 GCC 编译器是运行在 X86 架构的 PC 上的。 3、这个 GCC 编译器是编译 ARM 架构代码的也就是编译出来的可执行文件是在 ARM 芯片上运行的。
交叉编译器中“交叉”的意思就是在一个架构上编译另外一个架构的代码相当于两种架构“交叉”起来了。
交叉编译器有很多种我们使用 Linaro 出品的交叉编译器Linaro 是一间非营利性质的开放源代码软件工程公司Linaro 开发了很多软件最著名的就是 Linaro GCC 编译工具链(编译器)关于 Linaro 详细的介绍可以到 Linaro 官网查阅。Linaro GCC 编译器下载地址如下
https://releases.linaro.org/components/toolchain/binaries/latest-7/arm-linux-gnueabihf/打开以后下载界面如图 4.3.1.1 所示 在图中有很多种 GCC 交叉编译工具链因为我所使用的 I.MX6U-ALPHA 开发板是一个 Cortex-A7 内核的开发板因此选择 arm-linux-gnueabihf点击后面的“Binaries”进入可执行文件下载界面如下图所示 在写本教程的时候最新的编译器版本是 7.3.1但是笔者在测试 7.3.1 版本编译器的时候发现编译完成后的 uboot 无法运行。所以这里不推荐使用最新版的编译器。笔者测试过 4.9 版本的编 译 器 可 以 正 常 工 作 所 以 我 们 需 要 下 载 4.9 版 本 的 编 译 器 下 载 地 址 为
https://releases.linaro.org/components/toolchain/binaries/4.9-2017.01/arm-linux-gnueabihf/ 如下图所示 图中有很多种交叉编译器我们只需要关注这两种: gcc-linaro-4.9.4-2017.01-i686_arm-linux-gnueabihf.tar.tar.xz 和 gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz 第一个是针对 32 位系统的第二个是针对 64 位系统的。大家根据自己所使用的 Ubuntu 系统类型选择合适的版本比如我安装的 Ubuntu 16.04 是 64 位系统因此我要使用 gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz。
我们要先将交叉编译工具拷贝到 Ubuntu 中我们在当前用户根目录下创 建了一个名为“linux”的文件夹在这个 linux 文件夹里面再创建一个名为“tool”的文件夹用来存放一些开发工具。使用前面已经安装好的 FileZilla 将交叉编译器拷贝到 Ubuntu 中刚刚新建的“tool”文件夹中操作如图所示 拷贝完成的话 FileZilla 会有提示如图 图 4.3.1.5 交叉编译器拷贝完成 在 Ubuntu 中创建目录/usr/local/arm命令如下
sudo mkdir /usr/local/arm 创建完成以后将刚刚拷贝的交叉编译器复制到/usr/local/arm 这个目录中在终端使用命令 “ cd ” 进 入 到 存 放 有 交 叉 编 译 器 的 目 录 比 如 我 前 面 将 交 叉 编 译 器 拷 贝 到 了 目 录 “/home/zuozhongkai/linux/tool”中然后使用如下命令将交叉编译器复制到/usr/local/arm 中
sudo cp gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz /usr/local/arm/ -f操作步骤如图所示 图拷贝交叉编译工具到/usr/local/arm 目录中 拷贝完成以后在/usr/local/arm 目录中对交叉编译工具进行解压解压命令如下
sudo tar -vxf gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz等待解压完成解压完成以后会生成一个名为“gcc-linaro-4.9.4-2017.01-x86_64_arm-linuxgnueabihf”的文件夹这个文件夹里面就是我们的交叉编译工具链。
修改环境变量使用 VI 打开/etc/profile 文件命令如下 sudo vi /etc/profile 打开/etc/profile 以后在最后面输入如下所示内容
export PATH$PATH:/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin 添加完成以后的/etc/profile 如图 4.3.1.7 所示
图 4.3.1.7 添加环境变量 修改好以后就保存退出重启 Ubuntu 系统交叉编译工具链(编译器)就安装成功了。 4.3.2 安装相关库
在使用交叉编译器之前还需要安装一下其它的库命令如下
sudo apt-get install lsb-core lib32stdc6 等待这些库安装完成。 4.3.3 交叉编译器验证
首先查看一下交叉编译工具的版本号输入如下命令
arm-linux-gnueabihf-gcc -v 如果交叉编译器安装正确的话就会显示版本号如图 4.3.3.1 所示 图 4.3.3.1 交叉编译器版本查询 从图 4.3.3.1 中可以看出当前交叉编译器的版本号为 4.9.4说明交叉编译工具链安装成功。 第三章“Linux C 编程入门”中使用 Ubuntu 自带的 GCC 编译器我们用的是命令“gcc”。要使 用刚刚安装的交叉编译器的时候使用的命令是“arm-linux-gnueabihf-gcc”“arm-linux-gnueabihfgcc”的含义如下
1、arm 表示这是编译 arm 架构代码的编译器。 2、linux 表示运行在 linux 环境下。 3、gnueabihf 表示嵌入式二进制接口。 4、gcc 表示是 gcc 工具。 最好的验证方法就是直接编译一个例程我们就编译第一个裸机例程“1_leds”试试裸机 例程在开发板光盘中的路径为1、程序源码-1、裸机例程- 1_leds。在前面创建的 linux 文件 夹下创建 driver/board_driver 文件夹用来存放裸机例程如图 4.3.3.2 所示 图 4.3.3.2 创建 board_driver 文件夹 将第一个裸机例程“1_leds”拷贝到 board_driver 中然后执行 make 命令进行编译如图
4.3.3.3 所示 图 4.3.3.3 编译过程 从图 4.3.3.3 可以看到例程“1_leds”编译成功了编译生成了 led.o 和 led.bin 这两个文件 使用如下命令查看 led.o 文件信息 file led.o 结果如图 4.3.3.4 所示 图 4.3.3.4 led.o 文件信息 从图 4.3.3.4 可以看到 led.o 是 32 位 LSB 的 ELF 格式文件目标机架构为 ARM说明我 们的交叉编译器工作正常。