2019年7月18日星期四(交叉工具链)

Posted zjlbk

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2019年7月18日星期四(交叉工具链)相关的知识,希望对你有一定的参考价值。

一、交叉工具链?

1、什么是交叉工具链?

我们已经学习过的编译器是gcc编译器,gcc可以将高级语言转换目标程序。

gcc编译器特点:在Ubuntu编译,在Ubuntu运行。  -> 在同一个平台上编译运行,这个gcc编译器又称之为本地编译。

这个gcc编译器是Ubuntu中自带,gcc所的路径:/usr/bin/gcc。

其实交叉工具链就是一个编译器,但是交叉工具链在Ubuntu中是没有的,所以想使用交叉工具链,就必须要自己移植。

交叉工具链面向平台不是Ubuntu,而是ARM平台。交叉工具链特点:在Ubuntu中编译,在ARM平台运行。

结论:gcc编译出来的程序只能在Ubuntu中运行,而是交叉工具链编译出来的程序只能在ARM平台上运行。

2、什么是交叉编译?

本地编译就是在主机A上编译,在主机A上运行。

交叉编译就是在主机A上编译,在主机B上运行。

二、如何移植交叉工具链到ARM平台?

工具链:arm-2009q3.tar.bz2

1. 先将arm-2009q3.tar.bz2放置到共享目录下

2. 为交叉工具链创建一个新的目录,并给权限

   sudo mkdir /usr/arm

   sudo chmod 777 /usr/arm

3. linux下将arm-2009q3.tar.bz2直接解压到安装路径下即可。

   tar jxvf arm-2009q3.tar.bz2 -C /usr/arm

4. 交叉编译器是哪个?

/usr/arm/arm-2009q3/bin/arm-none-linux-gnueabi-gcc

. 使用交叉工具链和本地gcc编译器编译的区别?

1. 本地编译

gcc test.c -o test   -> 生成一个test的文件。

file test       -> 查看test这个文件的属性。

test: ELF   -> 代表该文件是可以执行。

      32-bit  -> 32位

      LSB executable  -> 代表当前该文件可以执行的。

      Intel 80386  -> (x86平台),说明该文件只能在x86平台运行。

2. 交叉编译

/usr/arm/arm-2009q3/bin/arm-none-linux-gnueabi-gcc test.c -o test   -> 生成一个test的文件。

file test       -> 查看test这个文件的属性。

 

test: ELF   -> 代表该文件是可以执行。

      32-bit  -> 32位

      LSB executable  -> 代表当前该文件可以执行的。

      ARM   -> (ARM平台),说明该文件只能在ARM平台运行。

四、为工具链生成一个新的链接文件。

[email protected]:/usr/arm/arm-2009q3/bin$ sudo ln -s arm-none-linux-gnueabi-gcc arm-linux-gcc

结果:

lrwxrwxrwx 1 root root      26 Jul 18 02:12 arm-linux-gcc -> arm-none-linux-gnueabi-gcc

-rwxr-xr-x 2 gec  gec   207948 Oct 16  2009 arm-none-linux-gnueabi-gcc

   练习1:安装交叉工具链

   练习2:为工具链取新的名字"arm-linux-gcc"

   练习3:在任何的路径下都可以使用"arm-linux-gcc"

   练习4:自己使用"arm-linux-gcc"编译一个程序,看看不是ARM架构!

 

以上是关于2019年7月18日星期四(交叉工具链)的主要内容,如果未能解决你的问题,请参考以下文章

如何构建MIPS交叉编译工具链

2019年7月11日星期四

部署虚拟环境linux系统 2019年7月15日星期一 第二课

2017年7月6日 星期四 --出埃及记 Exodus 27:18

2019年8月15日星期四(系统编程)

UML建模工具更新情况(2019下半年-2020)