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

news2024/10/6 0:35:13

目录

 【开发板、虚拟机和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可执行文件

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1510532.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python+requests接口自动化框架的实现

为什么要做接口自动化框架 1、业务与配置的分离 2、数据与程序的分离;数据的变更不影响程序 3、有日志功能,实现无人值守 4、自动发送测试报告 5、不懂编程的测试人员也可以进行测试 正常接口测试的流程是什么? 确定接口测试使用的工具…

内部应用解耦神器-Spring事件

大家好,我是程序员牛牛,《AI超级个体: ChatGPT与AIGC实战指南》的参与人,10年Java编程程序员。 1. 概述 在做业务开发过程中,有些复杂点的逻辑,可能代码逻辑会很冗长,举一个很简单的例子,如&am…

windows解决nodejs版本冲突:安装版本管理器nvm,可根据不同项目一键切换适配版本

windows解决nodejs版本冲突:安装版本管理器nvm,可根据不同项目一键切换适配版本 参考来源:在本机 Windows 上设置 NodeJS | Microsoft Learn 建议安装版本管理器 nvm-windows,再用它来安装 Node.js 和 npm,这样可以根据…

C++学习笔记:红黑树

红黑树 什么是红黑树红黑树的规则红黑树节点的定义红黑树的插入空树插入非空插入条件判断新插入的节点 cur 不为 root 且 parent->_col 为红就需要调整父节点为左 grandf->left parent当uncle节点为红色时,只需要进行颜色调整,即可当uncle为空 或 者存在但是为黑parent …

Midjourney能让角色保持一致了

Midjourney发布新功能,网友直呼“不可思议”! 现在你可以让生成的图像几乎保持角色一致,belike: 所有超级英雄长一个模样盯着你。 甚至动漫风、写实风等跨风格生成也同样适用: 保持同一风格,感jio配上文字…

【FPGA】DDR3学习笔记(一)丨SDRAM原理详解

本篇文章包含的内容 一、DDR3简介1.1 DDR3 SDRAM概述1.2 SDRAM的基础结构 二、 SDRAM操作时序2.1 SDRAM操作指令2.2 模式寄存器(LOAD MODE REGISTER)2.3 SDRAM操作时序示例2.3.1 SDRAM初始化时序2.3.2 突发读时序2.3.3 随机读时序2.3.4 突发写时序2.3.5 …

Java基础-接口

文章目录 1.快速入门代码:结果: 2.接口基本介绍1.语法注意:在jdk1.8以后接口才可以有静态方法,默认方法 2.代码实例 3.接口的应用场景1.场景介绍2.代码实例4.接口使用细节 5.接口课堂练习题目:答案:注意&am…

深入理解,java标识符?类型转换?

1、标识符 下面这张图是中国的一些姓氏 中国人起名字的规则都是以姓开头,名结尾。通过这个规则可以起:刘爱国、张三等,都是以汉字起的。但是不会起李ad、王123等名字,因为不符合规则。 所以,java在给变量、方法、类等…

【C++进阶】C++继承概念详解

C继承详解 一,继承的概念和定义1.1 继承的概念1.2 继承的定义1.3 继承关系和访问限定符 二,基类和派生类的对象赋值转移三,继承的作用域四,派生类的默认成员函数五,继承和友元&静态成员和继承六,菱形继…

Ansys Lumerical | 激光雷达天线仿真

附件下载 联系工作人员获取附件 在本文中,我们将了解如何根据激光雷达应用需求设计和优化相控阵光栅天线。 概述 激光雷达(LIDAR)是“light detection and ranging”的简称,近年来由于在机器人、自动驾驶汽车、高精度测绘等领域…

【AcWing】蓝桥杯集训每日一题Day2|前缀和|562.壁画(C++)

562. 壁画 562. 壁画 - AcWing题库难度:中等时/空限制:1s / 64MB总通过数:4154总尝试数:10197来源:Google Kickstart2018 Round H Problem B算法标签 思维题枚举前缀和 题目内容 Thanh 想在一面被均分为 N 段的墙上画…

[java——基础] 双亲委派机制

目录 核心思想: 双亲委派机制的好处: 三种类加载器 解析源代码 双亲委派思想面试总结: 核心思想: 向上搜索,向下加载。 双亲委派机制的好处: 防止Java核心类被篡改,防止类的重复加载。 三…

哈希表|15.三数之和

力扣题目链接 int cmp(const void *a,const void *b) {return *(int*)a - *(int*)b;} int** threeSum(int* nums, int numsSize, int* returnSize, int** returnColumnSizes) {*returnSize 0;if(numsSize < 3)return NULL;qsort(nums, numsSize, sizeof(int),cmp);int **…

C++ Qt开发:QNetworkAccessManager网络接口组件

Qt 是一个跨平台C图形界面开发库&#xff0c;利用Qt可以快速开发跨平台窗体应用程序&#xff0c;在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置&#xff0c;实现图形化开发极大的方便了开发效率&#xff0c;本章将重点介绍如何运用QNetworkAccessManager组件实现Web网…

Java日志框架Log4j 2详解

目录 一、什么是日志&#xff1f; 二、日志的主要用途 三、常用日志框架 1、Apache Log4j 2、Commons Logging 3、SLF4J 4、Logback 5、JUL(Java Util Logging) 6、Log4j 2 四、log4j 2 的优点 五、Log4j 2下载和配置 1、访问Log4j – 下载 Apache Log4j™ 2官网&a…

RHEL9 DNF/YUM仓库管理软件包

DNF/YUM仓库管理软件包 一个基于RPM包的软件包管理器能够从指定的服务器自动下载RPM包并且安装&#xff0c;自动处理依赖性关系&#xff0c;并且一次性安装所有依赖的软件包C/S模式 Server服务端提供RPM软件包与数据库文件repodataClient客户端使用dnf仓库 常用组合 组合参…

你还可以通过“nrm”工具,来自由管理“npm”的镜像

你还可以通过“nrm”工具&#xff0c;来自由管理“npm”的镜像 nrm&#xff08;npm registry manager&#xff09;是npm的镜像管理工具&#xff0c;有时候国外的资源太慢&#xff0c;使用这个就可以快速地在npm源间切换。 1.安装nrm 在命令行执行命令&#xff0c;npm install…

Java 容器启动执行指定任务

1、实现CommandLineRunner接口 实现CommandLineRunner接口&#xff0c;注意做初始化任务的类需要放在扫描路径下&#xff0c;使用Component注入到spring容器中。 import com.zw.service.StudentService; import org.springframework.beans.factory.annotation.Autowired; impo…

网络安全AI智能体公司「云起无垠」获数千万元天使+轮融资,致力于大模型与网络安全深度融合的技术研究

「云起无垠」致力于打造最懂安全的AI智能体&#xff0c;通过持续运营的工具、知识以及记忆引擎&#xff0c;不断提升智能体对用户安全场景的理解&#xff0c;以达到易于使用、自我学习、自主行动的特性&#xff0c;助力企业自动化执行各类安全任务&#xff0c;让软件更安全&…

在WSL2中安装多个Ubuntu教程

文章目录 前言一、前期准备1、WSL安装2、Docker安装 二、安装第二个Ubuntu系统1.切换为WSL22.获取Ubuntu16.04的tar文件从容器中导出tar 3. 将tar文件导入WSL4. 设置默认用户 总结 前言 适用于 Linux 的 Windows 子系统 (WSL) 是 Windows 的一项功能&#xff0c;可用于在 Wind…