[Linux_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可执行文件

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-13 15:16:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-13 15:16:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-13 15:16:01       82 阅读
  4. Python语言-面向对象

    2024-03-13 15:16:01       91 阅读

热门阅读

  1. 如何配置极狐GitLab Runner Cache 缓存

    2024-03-13 15:16:01       43 阅读
  2. 如何排查 IMKit 用户头像无法加载问题

    2024-03-13 15:16:01       45 阅读
  3. 【云原生】关于解耦和平台化的一些思考

    2024-03-13 15:16:01       41 阅读
  4. 手机天猫等级怎么查

    2024-03-13 15:16:01       41 阅读
  5. Redis 中的字符串数据结构详解及字符串命令

    2024-03-13 15:16:01       42 阅读
  6. 编写Linux的SHELL脚本设置环境变量遇到的那些坑

    2024-03-13 15:16:01       40 阅读
  7. Stable Diffusion如何生成高质量的图-prompt写法介绍

    2024-03-13 15:16:01       40 阅读
  8. LeetCode刷题--- 摆动序列

    2024-03-13 15:16:01       45 阅读
  9. 人事面试提问技巧全攻略

    2024-03-13 15:16:01       42 阅读
  10. TCP并发模型 || select || poll || epoll

    2024-03-13 15:16:01       40 阅读