一个简单的hello world交叉编译实验

交叉编译,简单地说,就是在一个平台上生成另一个平台上的可执行代码。下面就做一个简单的hello world实验来完成这一过程。

0. 网络环境搭建

本实验涉及两台主机。

A主机:安装交叉编译环境,并用来编译源文件。在本次实验中使用的是虚拟机ubuntu系统环境

B主机: arm架构平台开发板,用来运行A主机编译好的可执行文件,ip地址固定为192.168.1.230

(1)首先使用直连线连接A主机对应的物理主机。

(2)修改物理主机的ip地址(要求和B主机的网段一致),子网掩码,网关(默认即可,不要配置)

1554715317723

(3)修改虚拟机的网络连接方式为桥接

1554715545777

(4)修改虚拟机的ip地址和子网掩码

1554715616309

(5)重启虚拟机,以使网络配置可以

1
$ reboot

重启完成后执行以下命令查看是否配置成功

1
$ ifconfig

1554715834461

配置完成后虚拟机和开发板互ping,都ping通。

1. 搭建交叉编译环境

解压交叉编译gcc工具并放到共享目录里

下载arm-linux-gcc-4.5.1-v6-vfp-20120301.tgz

1
2
3
4
#复制gcc到共享目录里
qcmoke@qcmoke-virtual-machine:~/nfs/Linux$ cp arm-linux-gcc-4.5.1-v6-vfp-20120301.tgz /home/qcmoke/nfs/
#解压
qcmoke@qcmoke-virtual-machine:~/nfs$ tar zxvf arm-linux-gcc-4.5.1-v6-vfp-20120301.tgz

2. 编写hello.c测试文件

1
qcmoke@qcmoke-virtual-machine:~/nfs$ vim hello.c
1
2
3
4
5
6
#include<stdio.h>
int main()
{
printf("Hello world!\n");
return 0;
}

1554713663226

3. 编译hello.c

1
qcmoke@qcmoke-virtual-machine:~/nfs$ ./opt/FriendlyARM/toolschain/4.5.1/bin/arm-linux-gcc hello.c -o hello

1554713781948

4. 登录arm主机

1
qcmoke@qcmoke-virtual-machine:~$ telnet 192.168.1.230

1554713890561

5. 挂载共享目录

需要在A主机搭建nfs服务器,以便快速共享编译好的可执行文件。具体搭建教程请参考ubuntu 16.04 nfs服务的搭建。在本次实验中搭建的nfs共享目录是A主机的/home/qcmoke/nfs/目录,而挂载点是B主机的/mnt/nfs/目录。

通过在编译环境的主机执行以下命令查看共享目录地址

1
2
3
qcmoke@qcmoke-virtual-machine:~$ showmount -e localhost
Export list for localhost:
/home/qcmoke/nfs *

根据查询结果挂载到arm主机某个目录,如/mnt/nfs

1
2
3
4
5
#创建挂载点
[root@FriendlyARM /]# mkdir /mnt/nfs

#挂载
[root@FriendlyARM /]# mount -o rw 192.168.1.232:/home/qcmoke/nfs/ /mnt/nfs/ -o nolock

通过以下命令查看是否挂载成功

1
[root@FriendlyARM /]# df

1554714493056

6. 在arm主机上运行hello可执行文件

1
[root@FriendlyARM /]# /mnt/nfs/hello

1554714619763

运行成功,交叉编译完成!😄



----------- 本文结束 -----------




如果你觉得我的文章对你有帮助,你可以打赏我哦~
0%