本章内容对应视频讲解链接(在线观看):
我们写了 linux 上第一个 c 程序 heollo world ,是使用 gcc 编译器进行代码的编译,编译得到的可执行文件只能在 X86 结构的 PC 上运行,我们来看下,在我的 ubuntu 的 test 目录下有一个 hello.c ,这个程序也非常简单,就是一个 hello world ,我们来编译一下,然后运行下可执行文件,这个可执行文件是可以在 PC上运行的。如下图所示。
然后我们使用 file 命令来看下这个文件,这个文件是可以在 X86 上运行的,但是它不能在 ARM 上运行,因为它这里写的是 X86。如下图所示。
如果我们想在 ARM 上运行,就要使用 ARM 的编译器,然后在 X86 上进行编译。因为我们使用 ARM 的编译器编译完了之后,是把我们的可执行程序放到开发板上来运行,而不是在 PC 上运行的,这个过程大家可以把它理解成交叉,然后再和我们的编译器结合起来就叫做交叉编译器。交叉编译器的种类有很多,我
们使用 的 是 Linaro 公 司 的 arm 交 叉 编 译 器 , 这 是 交 叉 编 译 器 的 地 址
使用 file 命令来看下,这里显示的架构是 arm ,说明我们这个可执行文件是在开发板上运行的而不是在 X86 上运行的,可以看到,使用 gcc 编译器编译出来的可执行文件,它的架构是 X86 的,所以我们使用 gcc编译器编译完的可执行程序只能在 X86 的 ubuntu 上运行,不能在 arm 上运行。大家通过 file 命令就可以区分了,大家可以自己安装下。如下图所示。