我们写了 linux 上第一个 c 程序 heollo world ,是使用 gcc 编译器进行代码的编译,编译得到的可执行文件只能在 X86 结构的 PC 上运行,不能在开发板上运行,如果要在 arm 开发板上运行,则需要交叉编译这个 C 程序。
什么是交叉编译呢?
如果我们想在 ARM 上运行,就要使用 ARM 的编译器,然后在 X86 上进行编译。因为我们使用 ARM 的编译器编译完了之后,是把我们的可执行程序放到开发板上来运行,而不是在 PC 上运行的,这个过程大家可以把它理解成交叉,然后再和我们的编译器结合起来就叫做交叉编译器。
接下来我们来看下,如何来交叉编译 C 程序呢?首先我们要安装交叉编译器,RK3399 的 Linux 系统的交叉编译器并未单独提供,是和 Linux 的 BSP 源码包一起提供的,路径为“iTOP-3399 开发板/01_iTOP-3399光盘资料/20210512/05 Linux 源码”。所以我们只需要在环境变量里面把在 BSP 源码包提供的交叉编译器加到环境变量里面或者直接使用绝对路径编译即可。
我们现在 ubuntu 系统的任意目录下创建一个 hello.c 文件 ,这个程序也非常简单,就是一个 helloworld ,我们来编译一下,然后运行下可执行文件,这个可执行文件可以在 PC 上运行的。如下图所示。
然后我们使用 file 命令来看下这个文件,这个文件可以在 X86 上运行的,但是它不能在 ARM 上运行,因为它这里写的是 X86。如下图所示。