[IMX6ULL应用开发]-hello程序的交叉编译

目录

 【开发板、虚拟机和PC的三者联通】

使用串口连接到开发板

连接Ubuntu虚拟机

互ping测试

【交叉编译hello.c文件】

Ubuntu编译无法在板子运行问题

使用交叉编译链编译hello.c


 【开发板、虚拟机和PC的三者联通】

在这里我们使用IMX6ULL-PRO开发板进行学习,首先需要保证开发板、Ubuntu虚拟机以及Windows下的网卡可以互相ping通、

Ubuntu虚拟机使用桥接模式直接连接网卡,开发板直接使用网线连接网卡,这样虚拟机和开发板同时连接了此网卡,那么就可以通过此网卡互相ping了

在这里,我们分别给虚拟机、开发板以及网卡指定IP地址

Ubuntu:192.168.5.11

开发板:192.168.5.9

PC网卡:192.168.5.10

尝试进行互ping测试

我们可以使用MobaXterm软件通过串口连接开发板,同时通过ssh连接到虚拟机

使用串口连接到开发板

当我们使用串口线连接到电脑后,通过如下步骤来建立连接

连接Ubuntu虚拟机

使用MobaXterm连接到Ubuntu虚拟机,ip可以填写NAT获得的电脑网络IP也可以填写桥接网卡的IP

互ping测试

如下图,开发板可以ping通网卡以及虚拟机

如下图,虚拟机可以ping通开发板和网卡


【交叉编译hello.c文件】

一般来说,我们是使用虚拟机来作为服务器的,在Ubuntu上进行目标的编译,然后通过一系列手段在开发板上面执行或者传输等

现在在我们的Ubuntu下的01_hello文件夹下有一个文件,hello.c,我们使用gcc对其进行编译

gcc hello.c -o hello

我们使用gcc编译器编译了hello.c同时生成了hello这个可执行文件,运行

输出了结果

现在我们通过挂载把这个文件挂载到开发板上面尝试运行,所谓的挂载,可以理解为把一个设备挂载到开发板上的一个目录,通过访问这个目录就是在访问此设备了

 在这里我们把Ubuntu上的/home/book/nfs_rootfs目录挂载到开发板上的/mnt目录下,使用如下的命令

 mount -t nfs -o nolock,vers=3 192.168.5.11:/home/book/nfs_rootfs /mnt

-t nfs: 这个选项告诉mount命令要挂载的是一个NFS类型的文件系统

-o nolock,vers=3: 这是挂载选项,它们为NFS挂载提供了特定的配置。

        nolock: 这个选项表示不使用NFSv3的锁定机制。在某些情况下,这可以提高性能,但也可能导致数据不一致的问题,因此使用时需要谨慎

        vers=3: 这个选项指定了使用的NFS版本为3。NFS有多个版本,每个版本都有其特定的功能和特性

Ubuntu编译无法在板子运行问题

当我们成功在板子上挂载Ubuntu的文件夹的时候,便可以尝试执行在Ubuntu上面编译成功并且执行成功的hello可执行文件了

经过尝试发现,无法在板子上面执行编译好的hello程序,原因是gcc编译器是为x86架构编译的,如果我们要给开发板也就是ARM架构编译可执行文件,那么我们需要使用交叉编译链

通过file + 可执行文件名,我们可以看到hello可执行文件是基于x86架构的

使用交叉编译链编译hello.c

为了使可执行文件可以正常在开发板上开发,我们使用交叉编译

arm-buildroot-linux-gnueabihf-gcc hello.c -o hello_arm

生成一个hello_arm可执行文件,我们使用file查看它的架构,可知它是ARM架构的,所以可以在开发板上面执行

在开发板上执行hello_arm可执行文件

  • 14
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Leviiil

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值