09-ARM开发板的HelloWorld

在ARM开发板上运行x86_64平台程序

前面在Ubuntu系统编译生成了X86_64平台的HelloWorld程序,通过NFS服务器,尝试在开发板上直接运行。

在这里插入图片描述

如图所示,程序无法正常运行,终端提示ARM开发板在执行x86架构(Intel或AMD)的hello程序时提示格式错误,原因是x86_64和ARM架构的程序不兼容,本质是由于这些CPU使用的指令集不同。

安装交叉编译工具链

  • 编译器和目标程序都是相同架构的编译过程,被称为本地编译
  • 编译器和目标程序运行在不同架构的编译过程,被称为交叉编译

前面就有提过交叉编译,为什么需要交叉编译,是因为通常编译工具链对编译环境有较高的要求,编译复杂的程序时,可能需要巨大的存储空间以及强大的CPU运算能力加快编译速度。常见的ARM架构平台资源有限,无论是存储空间还是CPU运算能力,都与X86平台相去甚远。

交叉编译器:能进行架构“交叉”编译过程的编译器。

安装ARM-GCC

安装交叉编译工具链有如下三种方式:

  • 直接在Ubuntu下使用APT包管理工具下载安装,操作简单(本篇文章使用)
  • 自行下载第三方制作好的工具链,如Linaro,好处是选择丰富,能找到很多不同的版本。
  • 使用crosstool-ng根据需要自己制作,过程复杂不推荐。

安装命令

sudo apt install gcc-arm-linux-gnueabihf# 安装完毕后使用如下命令查看版本
arm-linux-gnueabihf-gcc–v
交叉编译helloworld程序

主机安装好交叉编译工具器后,执行如下命令对helloworld程序进行交叉编译:

arm-linux-gnueabihf-gcc hello.c -o hello# 使用如下命令查看交叉编译器生成的hello程序
readelf -a hello

在这里插入图片描述
从上图可以看到hello程序的系统架构为ARM平台,可以尝试通过NFS在开发板上运行。

如果不能运行,而且提示glibc版本问题,很可能是因为系统版本问题。(本人之前用的Ubuntu22.04交叉编译出来的程序在开发板上提示gblic版本不对应,程序运行不了,除了想到能静态编译想不到其他方法,后面换了Ubuntu18.04之后交叉编译又能运行了)

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

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

相关文章

笔记:Python猴子吃桃

文章目录 前言一、分析题目二、编写代码1.代码2.优化代码 总结 前言 笔记:猴子吃桃:猴子第一天摘下若干个桃子,当即吃了一半,不过瘾就多吃了一个, 第二天又将剩下的桃子吃了一半,不过瘾又多吃了一个,以后每…

c++使用googletest进行单元测试

googletest进行单元测试 使用Google test进行测试一、单元测试二、使用gmock测试 使用Google test进行测试 使用场景: 在平时写代码中,我们需要测试某个函数是否正确时可以使用Google test使用,当然,我们也可以自己写函数进行验证…

SpringMVC中,/和/*和/**分别表示什么

根路径 "/" 用途 / 是最基本的路径映射,在Spring MVC中它表示应用程序的根路径。当你在浏览器中访问 http://domain.com/ 时,就会匹配到根路径。 特点 这种映射方式主要用于默认的欢迎页或者一些针对根路径的特定处理。例如,你可能…

Docker 停止及删除容器和镜像(单个和所有)

Docker 停止及删除容器和镜像(单个和所有) 文章目录 Docker 停止及删除容器和镜像(单个和所有)1. docker其它相关命令2. 停止及删除容器和镜像(单个和所有)2.1. 停止及删除单个容器2.2. 停止及删除所有容器…

Python数字三角形

在数学中,数字三角形通常指的是由数字组成的三角形结构,其中每个数字是其正上方数字之和。一个经典的例子是帕斯卡三角形(Pascals Triangle),它与组合数学中的二项式系数紧密相关。 在Python中,我们可以通…

旅游陪同翻译难吗, 旅游翻译英译中哪家好?

近来,随着中国旅游业的蓬勃发展,旅游陪同翻译的需求也水涨船高,这些专业的翻译服务者为中外游客搭建起友谊的桥梁,引领他们共同探索中国这片古老而神秘的土地 。那么,旅游陪同翻译英译中难吗?我们如何在众多…

混合A*算法

混合A算法是一种路径规划算法,它结合了A搜索和采样优化技术。其原理可以简要概括如下: A*搜索:A*算法是一种启发式搜索算法,用于解决图或者网络中的路径规划问题。它通过维护两个列表(开放列表和封闭列表),根据启发式函数(估计函数)和已走过路径的成本来选择下一个状态…

mysql数据库连接工具(mysql数据库连接工具怎么备份数据不备份表结构)

MySQLWorkbench连接,导入和导出数据库? 1、导出:使用MySQL Workbench连接到MySQL服务器,选择要导出的数据库,右键单击数据库并选择“导出”。选择要导出的表和数据,将导出文件保存为.sql文件。 2、打开MySQL Workbench&#xf…

OpenHarmony 视图缩放组件—subsampling-scale-image-view

简介 深度缩放视图,图像显示,手势平移缩放双击等 效果图(旋转、缩放、平移) 下载安装 ohpm install ohos/subsampling-scale-image-view OpenHarmony ohpm 环境配置等更多内容,请参考如何安装 OpenHarmony ohpm 包 使…

20240419金融读报:加大绿色债券支持绿色金融货币政策仍有空间人民银行对金融服务实体理解摘抄

1、国家发文支持通过发行绿色债券、绿色资产支持正确等支持绿色金融。但2023年绿色债券发行规模占比1.17%。(是不是可以买一支,乘风起?) 2、4月18日,国新办举行新闻发布会,表明货币政策还有空间&#xff0c…

简单了解Vue3

1. Vue 3相对于Vue 2有哪些主要的改进? 答案: Vue 3相对于Vue 2的主要改进包括: Composition API:提供更灵活、可重用的代码组织方式。更好的TypeScript支持:减少类型错误,提高代码质量。性能优化&#x…

昂科烧录器支持Nuvoton新唐科技的低功耗微控制器M482SIDAE

芯片烧录行业领导者-昂科技术近日发布最新的烧录软件更新及新增支持的芯片型号列表,其中Nuvoton新唐科技的低功耗微控制器M482SIDAE已经被昂科的通用烧录平台AP8000所支持。 M482SIDAE以Arm Cortex-M4F为核心,是带有DSP指令集的高效能低功耗微控制器。其…

基于Spingboot+vue协同过滤音乐推荐管理系统

项目演示视频效果: 基于Spingbootvue协同过滤音乐推荐管理系统 基于Spingbootvue协同过滤音乐推荐管理系统 1、项目介绍 基于Springboot的音乐播放管理系统总共两个角色,用户和管理员。用户使用前端前台界面,管理员使用前端后台界面。 有推荐…

【Win】怎么下载m3u8视频\怎么通过F12开发人员工具获取视频地址\怎么下载完整的.ts格式视频

怎么下载m3u8视频?首先通过浏览器本地的开发人员工具,获取m3u8的地址,然后再通过第三方下载工具下载,此处以N_m3u8DL-CLI_v3.0.2为例 如下图的步骤,即可获取到视频的m3u8地址 打开N_m3u8DL-CLI_v3.0.2,粘贴…

如何实现外网访问内网ip?公网端口映射或内网映射来解决

本地搭建服务器应用,在局域网内可以访问,但在外网不能访问。如何实现外网访问内网ip?主要有两种方案:路由器端口映射和快解析内网映射。根据自己本地网络环境,结合是否有公网IP,是否有路由权限,…

基于Springboot的社区疫情返乡管控系统(有报告)。Javaee项目,springboot项目。

演示视频: 基于Springboot的社区疫情返乡管控系统(有报告)。Javaee项目,springboot项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系…

JavaWeb--06Vue组件库Element

Element 1 Element组件的快速入门1.1 Table表格 1 Element组件的快速入门 https://element.eleme.cn/#/zh-CN Element是饿了么团队开发的 接下来我们来学习一下ElementUI的常用组件,对于组件的学习比较简单,我们只需要参考官方提供的代码,然…

AJAX——图片上传

图片上传流程 1.获取图片文件对象 2.使用FormData携带图片文件 3.提交表单数据到服务器&#xff0c;使用图片url网址 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible"…

STM32使用HAL库解码433遥控芯片EV1527

1、首先了解一下433遥控芯片ev1527的基本资料&#xff1a; 这是他编码的关键信息&#xff1a; 也就是说&#xff0c;一帧数据是&#xff1a;一个同步码20位内码4位按键码。 内码20位2^201048576个地址。 发送就是一帧数据接一帧数据不间断发送。 2、解码思路 从上面的帧结构…

大数运算(加法和除法)

声明:写法是多样的&#xff0c;下面仅仅是我比较喜欢的写法。另外&#xff0c;这里的除法是高精/低精。实际题目里面&#xff0c;反正我没见过高精/高精的。 AB: #include <bits/stdc.h> using namespace std; const int inf 0x3f3f3f3f; #define ll long long int a[…