第二十三讲 ARM-GCC 与交叉编译
一、 交叉编译
前面讲到的 hello 例子,在 Ubuntu 下进行编译,编译完成之后的可执行文件在 Ubuntu 环境下运行,这个叫做本地编译。即在当前平台编译,编译得到的程序也在本地执行。嵌入式系统中的编译过程与本地编译却有不同。在一种平台上编译,并能够运行在另一种体系架构不同的平台上,这种称为交叉编译。
在 x86 处理器平台上编译能够运行在 ARM 架构的处理器平台上的程序。这里面需要的工具称为交叉编译工具,他又多个程序连接构成,也称之为交叉编译工具链。
二、ARM-GCC
由于嵌入式设备的资源比较紧张,很多的嵌入式设备并不能将编译工具安装在设备上,需要通过在 x86 平台下编译得到可执行程序后,再挪到 ARM 平台上运行。
要在 x86 平台上编译出 ARM 平台上运行的程序,必须使用交叉编译工具。
ARM-GCC 是针对 ARM 平台的一款编译器,是 GCC 编译工具链的一个分支。
三、 安装 ARM-GCC
四、使用交叉编译工具链在 Ubuntu 上编译 arm 程序
-
创建文件 hello.c 命令:touch hello.c -
在 hello.c 在插入代码 #include <stdio.h>
int main(int argc, char **argv)
{
printf("Hello world!\r\n");
return 0;
}
-
保存退出 -
使用交叉编译工具编译代码 命令:rm-linux-gnueabihf-gcc hello_world.c -o hello -
将编译好的文件放置到共享文件夹 命令:mv hello 共享文件路径 如果这里报权限错误,请在前面加上 sudo -
切换到开发板 -
登陆然后连接 nfs 服务器 命令:sudo mount -t nfs ubuntu ip:共享文件绝对路径 挂载的目录 例如:sudo mount -t nfs 192.168.3.19:/home/dragon/nfstest /mnt -
进入 /mnt 目录 命令:cd /mnt 这里目录改为自己挂载的目录 -
运行可执行文件 ./hello -
输出结果 Hello world! -
成功!
|