Ubuntu20.04下交叉编译树莓派能运行的c++程序(不含第三方库)

2023-10-27

参见博主之前的博客,里面生成了test目标文件,现在将这个目标文件传到树莓派上,运行出现如下报错信息:

这里因为我的编译平台(x64 Ubuntu操作系统)和目标平台(ARM raspbian操作系统),所以前者编译出来的东西并不能在目标平台上运行。通样的代码,我们直接在树莓派上编译运行是没有问题的(代码见之前博客)。

那么我们可以通过交叉编译工具链来实现x64 Ubuntu编译出来的程序能运行到树莓派4B上。

1. 下载树莓派交叉编译工具

git clone git://github.com/raspberrypi/tools.git

下载完毕后可看到文件夹结构

2.添加交叉编译工具的路径加到环境变量中

终端中打开文件

sudo gedit ~/.bashrc

文件底部export对应自己路径

保存关闭,再输入如下命令生效一下

source ~/.bashrc

此时输入arm 后跟两个tab键,会输出如下信息:

这里我们要编译的是c++,选择工具arm-linux-gnueabihf-g++,使用该编译工具进行编译,编译成功。

尝试在ubuntu下运行目标文件test_helloworld,会出现如下不正确的信息,可以看到编译出来的目标文件在源平台上运行不了。

我们将编译出来的test_helloWorld.out拷贝到树莓派上,可以看到,正常运行。

可以看到在ubuntu上交叉编译出来的可执行文件,可以在树莓派上跑起来。

2022.1.2更新:

实验1: 博主尝试用如下树莓派路径下的编译环境,仍可以交叉编译成功。在树莓派上正确执行程序

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Ubuntu20.04下交叉编译树莓派能运行的c++程序(不含第三方库) 的相关文章

随机推荐

  • G003-186-08

    作业报告 目录 项目需求提案计划书 一 项目介绍 一 项目背景 二 产品目的 三 应用领域 1 项目范围 2 功能范围 3 应用对象 四 项目优势 五 可行性分析 1 技术可行性分析 2 经济可行性分析 3 社会可行性分析 项目需求萃取分析
  • 如何处理ChatGPT在文本生成中的语法错误和不合理性?

    ChatGPT是一种强大的自然语言处理模型 但它并不是完美的 有时会产生语法错误或不合理的文本 这些问题可能会影响模型生成的内容的质量和可信度 在处理ChatGPT中的语法错误和不合理性时 有许多方法和策略可以采用 以下是一些详细的讨论 1
  • PhotoShop 之 绘制心型云彩

    利用渐变工具 画笔工具 路径工具绘制心型云彩 1 新建一个白色画布 2 利用渐变工具 绘制背景图 3 新建一个图层 利用自定义形状 选择路径 绘制一个心型形状 4 配置画笔 5 选择路径 选择右下角的 用画笔描边路径 按钮 对心形状进行描边
  • AngularJS中的$http缓存以及处理多个$http请求

    在AngularJS的实际项目中 经常需要处理多个 http请求 每个 http请求返回一个promise 我们可以把多个promise放到 q all 方法接受的一个数组实参中去 处理多个 http请求 angular module ap
  • C++ 返回值为数组的函数

    首先整理一下new的用法 1 new 分配一个数的空间 2 new 分配一个数组的空间 空间大小在 中指定 3 当使用new运算符定义一个多维数组变量或数组对象时 它产生一个指向数组第一个元素的指针 返回的类型保持了除最左边 维数外的所有维
  • 使用 MBean 和 日志查看 Tomcat 线程池核心属性数据

    文章目录 CustomTomcatThreadPoolMBean CustomTomcatThreadPool CustomTomcatThreadPoolMBean com qww config public interface Cust
  • Python爬虫之JS逆向分析技巧

    Python爬虫之JS逆向分析技巧 当我们使用爬虫时 遇到被JS加密的参数怎么办 有人会说用Selenium不就可以了么 但是Selenium执行又没效率怎么办 答案是 使用Python的execjs库直接执行JS脚本来获取加密后的参数 J
  • 【Linux操作小试牛刀】如何使用systemctl 命令管理 systemd服务

    前言 需求 当Linux中有许多系统服务 无法通过外部管理工具或者接口开启 关闭 需要手动管理时就需要用到systemctl命令 Systemd是基于Linux的操作系统的系统和服务管理器 用于管理服务 Systemd比旧的Sysvinit
  • [结构体]Cpp里结构体的几种常用写法

    1 定义并声明结构体变量 struct Date int year int month int day int main Date date 声明并定义了一个Date类型的变量date date year 2023 date month 9
  • Ubuntu 安装指定版本 python

    场景 在构建 docker 镜像的时候为了与 TensorFlow Pytorch 或者其他程序能兼容使用 需要安装指定版本的 python 常用的安装命令 apt get 有时候不能很 精确 指定 甚至是找不到源 隔山修路 遇水搭桥 py
  • golang和rust嵌入式开发初探

    本文简单的介绍了golang和rust语言在openwrt系统 mips架构下的交叉编译 环境 主机 系统 内核 架构 host主机 Centos 7 2 linux 3 10 0 327 x86 64 target主机 openwrt 1
  • unity拖拽drag_Unity全方位拖拽物体攻略

    Unity中UGUI控件和3D物体拖拽实现 基本原理 Unity拖拽的基本原理 射线检测 鼠标位置增量转换为统一空间的位置增量 将位置增量添加到拖拽物体原位置上 统一空间指的是将所有向量转换为同一空间下再进行计算 项目演示 左测 UGUI
  • blender基础认识(选项开关、工具栏、视图等)

    文章目录 引言 一 大纲选项开关和保存启动文件 1 大纲选项 1 禁用选中 2 视图影藏 3 视图禁用 4 渲染禁用 2 保存启动文件 二 工具栏和侧边栏 1 左侧工具栏 2 右侧工具栏 三 视图 1 视角 2 缩放 3 拖拽 4 摄像机视
  • AD PCB导出Gerber文件(非常详细的步骤)

    当我们的PCB绘制好 并仔细检查后 就可以把文件交给工厂生产了 一般有两种方式 第一种最简单 就是直接将PCB文件压缩打包 发给工厂 发给工厂的途径一般有两种 一种是在其官网上提交 一种是在其开发的应用程序上提交 嘉立创工厂就可以在其开发的
  • Hibernate笔记_如何处理OO中的一些特点

    1 对象属性是复合数据类型 composite user type 这其实是OO中的aggregation 和 composition Embeddable Embedded span style font size 14px packag
  • linux ctrl+z之后如何恢复

    在linux中使用matlab的时候 常常用ctrl z将matlab挂起 一开始并不知道怎么处理 也关不掉 后来发现用fg再回车就可以将后台挂起程序切换的前台来
  • 如何利用github搭建个人网站(无需购买云服务器)

    请看原创 转载来源 1 建立GithubPage 这里的作用就是说在github上建立一个仓库 并且将它设置成github的网页模式 其实我们后面的域名只是跳转到这个仓库的页面 首先新建一个仓库 然后注意设置仓库名字时要和你的githubI
  • Graph Correspondence Transfer for Person Re-Identification论文笔记

    摘要 提出了GCT 图关系迁移 模型解决行人重识别问题 与现存的方法不一样 GCT将行人重识别视为一个离线的图匹配问题和一个在线的关系迁移问题 在训练过程中 通过patch级别的图匹配 在具有不同姿势对配置的正样本对中离线的学习得到一个关系
  • 详解numpy.random.randn函数

    文章目录 正态分布 函数原型 参数解析 该函数的注意事项 示例代码 示例结果 参考 正态分布曲线绘制代码 numpy的random模块中的randn函数用于从 标准正态 方差为1 均值为0的正态分布 分布返回一个 或多个 float类型数据
  • Ubuntu20.04下交叉编译树莓派能运行的c++程序(不含第三方库)

    参见博主之前的博客 里面生成了test目标文件 现在将这个目标文件传到树莓派上 运行出现如下报错信息 这里因为我的编译平台 x64 Ubuntu操作系统 和目标平台 ARM raspbian操作系统 所以前者编译出来的东西并不能在目标平台上