在ubuntu里面安装交叉编译工具(树莓派的)

2023-11-14

- ** 交叉编译是什么,为什么要交叉编译**

交叉编译: 是在一个平台上生成另一个平台上的可执行代码。
我们再windows上面编写C51代码,并编译成可执行代码,如xx.hex,是在c51上面运行,不是在windows上面运行我们在ubuntu上面编写树莓派的代码,并编译成可执行代码,如a.out,是在树莓派上面运行,不是在ubuntu linux上面运行。

 **编译**:是在一个平台上生成在该平台上的可执行代码。
  • 为什么要交叉编译
    平台上不允许或不能够安装我们所需要的编译器比如C51
    1.因为目的平台上的资源贫乏,无法运行我们所需要编译器
    2.树莓派是不是就不需要交叉编译?
    错。也要 树莓派有时又是因为目的平台还没有建立,连操作系统都没有,根本谈不上运行什么编译器。操作系统也是代码,也要编译!
    宿主机(host) :编辑和编译程序的平台,一般是基于X86的PC机,通常也被称为主机。
    目标机(target):用户开发的系统,通常都是非X86平台。host编译得到的可执行代码在target上运行。

- 交叉编译需要用到什么工具

交叉编译器、交叉编译工具链

- 交叉编译工具链的安装

https://github.com/raspberrypi/

从共享文件夹拷贝到你需要放的工作目录
在这里插入图片描述

cp /mnt/share/tools-master.zip .

拷贝完成进行解压

unzip tools-master.zip 

然后进入tools-master
在这里插入图片描述
我们要用的是arm-bcm2708,然后进入该目录,我这台是64位的,自行选择。
在这里插入图片描述

在这里插入图片描述
该目录底下是一大堆可执行文件,我们要用到的是我箭头标志的那个
在这里插入图片描述
可以看下它的版本

./arm-linux-gnueabihf-gcc -v

在这里插入图片描述
如果要改成执行树莓派的代码,使用这个编译器,它的路径藏得很深,使用很麻烦,怎么能让它可以像使用gcc这么方便呢?接下来就是设置环境变量了。

-临时有效
显示环境变量

echo $PATH

在这里插入图片描述
显示当前文件夹

pwd

在这里插入图片描述
接下来就是配置环境变量

export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/majie/testPi/tools-master/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin

export PATH=这边先复制下图中的路径
在这里插入图片描述
接着:后面加入刚刚pwd的路径
在这里插入图片描述
我们回到工作目录发现就可以直接使用了
在这里插入图片描述
-永久有效
修改工作目录下的.bashrc 隐藏文件(配置命令终端的)

vi /home/majie/.bashrc

翻到最后一行把刚刚上面那个export PATN=……复制下来
在这里插入图片描述
然后输入下面的指令生效一下(要根据自己的工作目录我这边是我自己的

source /home/majie/.bashrc

  • 简单的测试一下
    用事先ubuntu里面的测试代码,能否在树莓派里面运行
#include <stdio.h>
int main()
{
	printf("hello shumeipai\n");
	return 0;
}

用交叉编译工具
检查下交叉编译工具对不对:


arm-linux-gnueabihf-gcc -v

arm-linux-gnueabihf-gcc xxx.c -o xxx

arm-linux-gnueabihf-gcc test.c  -o test_1

在这里插入图片描述
把test_1拷贝到树莓派上
如何把编译生成的可执行文件下载到开发板:
scp clientInPi pi@192.168.43.30:/home/pi
指令 文件名 开发板用户名@开发板地址:开发板的绝对路径

scp test_1 pi@192.168.0.xxx:/home/pi

在这里插入图片描述
我们再看树莓派是否收到
在这里插入图片描述
我们来运行下
在这里插入图片描述

总结

中途还是遇到很多问题的,比如安装virtual box 的增强功能,以及刚刚传树莓派ip地址失败灯小问题,百度都能解决。加油吧!!!!!!

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

在ubuntu里面安装交叉编译工具(树莓派的) 的相关文章

  • 如果目录不存在,有没有办法让 mv 创建要移动到的目录?

    因此 如果我在主目录中并且想将 foo c 移动到 bar baz foo c 但这些目录不存在 是否有某种方法可以自动创建这些目录 以便你只需要输入 mv foo c bar baz 一切都会顺利吗 似乎您可以将 mv 别名为一个简单的
  • %config(noreplace) 文件上出现意外的 RPM 冲突

    我正在创建我自己的RPM using rpmbuild My RPM 包含配置文件哪个应该永远不会被覆盖 即使 RPM 包含这些配置文件的新版本 为了存档这个 我用以下标签标记了它们 config noreplace opt mypacka
  • python 可以检测它运行在哪个操作系统下吗?

    python 可以检测操作系统 然后为文件系统构建 if else 语句吗 我需要将 Fn 字符串中的 C CobaltRCX 替换为 FileSys 字符串 import os path csv from time import strf
  • 在Linux中将日期附加到文件名

    我想在文件名旁边添加日期 somefile txt 例如 somefile 25 11 2009 txt 或 somefile 25Nov2009 txt 或任何类似的内容 也许脚本或终端窗口中的某些命令可以执行 我正在使用Linux Ub
  • 如何从外部模块导出符号?

    我在内核源代码树之外进行编码 有两个模块 第一个printt有一个功能printtty 将字符串打印到当前 tty 以及第二个模块hello这会调用printtty 在初始化期间 我已经添加了EXPORT SYMBOL printtty 在
  • Laravel 内存问题?

    各位 我在 DO 服务器上遇到这样的问题 我已经尝试了一切 整个网站在使用 Homestead 的 Linux 服务器上 100 正常工作 但上传后 它只能工作一次 在重新加载或刷新页面后会多次下降 我尝试增加 apache 服务器的内存
  • 如何防止 CMake 在构建时(而不是安装时)为共享库创建符号链接?

    我正在使用 CMake 在 Linux 上使用 Bullet3 构建一个项目 在构建整个解决方案时 它会构建附加了 SOVERSION 的 Bullet 输出库 并创建一个不带版本的符号链接 对于我的特定场景 我不喜欢这种行为 并且我不想编
  • 如何修复 /usr/bin/env 参数处理?

    我遇到了一个奇怪的问题 usr bin env 我设计了一个简单的脚本来显示问题 该脚本使用 Ruby 编写 但使用 Python 编写的类似脚本也会发生同样的情况 这是脚本 usr bin env ruby p ARGV 还有一个没有 u
  • 选择多个模式的 awk 代码

    这是我的输入文件 比如modified txt r4544 n479826 2012 08 28 07 12 33 0400 Tue 28 Aug 2012 1 line Changed paths M branches 8 6 0 con
  • 如何从python导入路径中删除当前目录

    我想使用 Mercurial 存储库hg本身 也就是说 我克隆了 Mercurialhttps www mercurial scm org repo hg https www mercurial scm org repo hg并想运行一些h
  • Linux shell 标题大小写

    我正在编写一个 shell 脚本并有一个如下所示的变量 something that is hyphenated 我需要在脚本中的各个点使用它 如下所示 something that is hyphenated somethingthati
  • Docker 容器可以访问 DNS,但无法解析主机

    我在运行 docker 容器时遇到一个有趣的问题 突然间 我无法从容器内解析 DNS 这是一个概要 一切都没有解决 apt get pip 一次性 ping 容器等正在运行docker run it dns 8 8 8 8 ubuntu p
  • CMake:使用其他平台的生成器。如何?

    如何使用 CMake 在 Linux 上生成 Visual Studio 项目文件 你不能 您必须在 Windows 上运行 CMake 才能为 Visual Studio 生成
  • BlueZ D-Bus C,应用 BLE

    我正在尝试编写一个应用程序来搜索附近的蓝牙设备并与它们通信 我的应用程序将用 C 语言编写 并打算在 Linux 下工作 是否有通过 C 中的 D Bus 使用 BlueZ 的教程或示例 此应用程序的目的是从 BLE 中的文件发送数据 你能
  • Python 线程与 Linux 中的多处理

    基于此question https stackoverflow com questions 807506 threads vs processes in linux我假设创建新流程应该几乎和创造新线程在Linux中 然而 很少的测试显示出截
  • mod_perl 无法看到 /tmp 中的文件

    我有一些 mod perl 代码试图访问 tmp 下的文件 但它抛出 没有这样的文件或目录 错误 我在代码中添加了一个 ls al tmp 来查看 Perl 在目录中看到的内容 它只给了我 和 drwxrwxrwt 2 root root
  • 多线程进程的线程ID可以与另一个正在运行的进程的进程ID相同吗?

    我正在尝试找到一种方法来唯一标识多进程环境中的线程 我有一个服务器 它跟踪连接到它的不同进程 其中一些是多线程的 一些不是 为了识别多线程连接中的线程 我使用线程 ID 作为唯一标识符 在任何给定时间最多有 1 个多线程进程连接 我的问题是
  • pip 找不到满足要求的版本 django==2.2.1

    我刚刚将操作系统更改为 linux 并且想安装 django 但我无法安装最新版本的 django 我努力了 pip install django 但是它安装了 django 1 11 11 这不是我需要的 我还将我的 pip 升级到了 1
  • AMD OpenCL 在 Linux 上工作所需的最小必要文件子集是什么?

    我已经使用 buildroot 构建了 Linux 内核 我已将开源 amdgpu 驱动程序和所需的固件合并到其中 驱动程序很好 检测 GPU 模式设置运行良好 调整 小文本 的分辨率 启动后会显示命令行 现在我需要运行 OpenCL 程序
  • 如何告诉 CMake 将构建文件放在哪里?

    我想告诉 CMake 将文件和文件夹输出到不同的文件夹而不是当前文件夹 我在下面讨论的是 CMake 生成的文件 文件 CMakeCache txt 目录 CMakeFiles 文件 生成文件 目录 bin 文件 cmake install

随机推荐

  • golang多版本管理工具g

    一 Go的项目隔离 GVM是一个golang虚拟环境配置工具 其允许一台机器上安装多个golang版本 gvm是第三方开发的Go多版本管理工具 类似ruby里面的rvm工具 或者nodejs的版本管理工具nvm 它是以shell脚本开发的工
  • 为Nginx添加第三方模块

    cd opt 拖入压缩包 解压 mv到指定目录 方便后面操作 进入nginx安装包 cd opt nginx 1 15 9 root szh nginx 1 15 9 configure prefix usr local nginx add
  • ASCII码对照表(二进制、十进制、十六进制)

  • MySQL存储引擎及其索引实现

    存储引擎指表的类型及表在计算机上的存储方式 主要的存储引擎有InnoDB MyISAM Memory等 MyIASM 1 使用这个存储引擎 每个MyISAM在磁盘上存储三个文件 frm文件 存储表的定义数据 MYD文件 存放表具体记录的数据
  • 静态链表的概念与基本操作

    静态链表顾名思义就是用静态数组的方式来模拟一个链表的实现 这个在没有指针类型的高级机器语言会出现 但是用途感觉还是很少的 由于是借助于一个固定长度的数组来描述线性表的链式存储结构 灵活度比较低的 和链表的一样 adt中含有数据域 data和
  • Unity 基础 之 一个点(物体)绕另一个点(物体)旋转的简单封装

    Unity 基础 之 一个点 物体 绕另一个点 物体 旋转的简单封装 目录 Unity 基础 之 一个点 物体 绕另一个点 物体 旋转的简单封装 一 简单介绍 二 实现原理 三 注意事项 四 效果预览 五 实现步骤 六 关键代码 七 附加
  • ​LeetCode刷题实战426:将二叉搜索树转化为排序的双向链表

    算法的重要性 我就不多说了吧 想去大厂 就必须要经过基础知识和业务逻辑面试 算法面试 所以 为了提高大家的算法能力 这个公众号后续每天带大家做一道算法题 题目就从LeetCode上面选 今天和大家聊的问题叫做 将二叉搜索树转化为排序的双向链
  • Python时间序列scikit-learn回归预测电力需求

    时间序列是一系列按时间顺序排列的数据 这些数据以相等或不等的间隔间隔开 预测过程包括预测时间序列的未来值 或者通过仅基于其过去行为 自回归 对序列进行建模 或者通过使用其他外部变量来进行建模 在处理时间序列时 很少需要只预测序列中的下一个元
  • Cloudflare设置优选IP教程-Cloudflare自选IP

    在第三方平台将您的域名记录指向您的服务器源IP Cloudflare 怕是一个耳熟能详的名字了 很多人都说Cloudflare是减速cdn 反向加速 Cloudflare的默认节点确实很慢 但是通过优选可以自定义很多Cloudflare的优
  • 蓝桥杯2022年第十三届JAVA省赛真题-数组切分

    数据范围很敏感 给的10000 很适合跑常数小的n 2算法 在加上最后的答案很大 肯定不能枚举每一种答案的具体状态 所以很容易想到用动态规划来解决 动态规划 f i 1 i中 已经划分好的所有合法方案的数量 include
  • 修改oem.img镜像文件

    1 将oem img复制到虚拟机中 挂载镜像 mount oem img mount user data 2 查看是否挂载成功 df h 3 进入挂载目录进行修改 cp f README test img mount user data 4
  • Android Service(二)Service的两种启动方式

    文章目录 一 startService 二 bindService 上一篇 Android Service 一 概述 作用 生命周期 下一篇 Android Service 三 望支持加快更新 一 startService 效果图 需要配合
  • 简单题--奇数倍数

    题目描述 本题为填空题 只需要算出结果后 在代码中使用输出语句将所填结果输出即可 请你找到最小的整数 XX 同时满足 XX 是 20192019 的整倍数 XX 的每一位数字都是奇数 代码如下 public class Main publi
  • idea打包项目时报错 There are test failures

    出现这个错误时要点击跳过测试类的按钮 图中的这个圆圈 可以看到test已经被划掉了 再点击package打包 成功
  • SAP基本计量单位更改

    点击进入 SAP基本计量单位更改 前言部分 大家可以关注我的公众号 公众号里的排版更好 阅读更舒适 正文部分 在SAP中物料创建后 一旦发生业务 其基本计量单位便很难修改 由于单位无法满足业务要求 往往会要求新建一个物料替代旧物料 这时候除
  • Python Pandas 常用统计数据方法汇总(求和,计数,均值,中位数,分位数,最大/最小,方差,标准差等)

    Pandas 统计数据方法汇总 准备数据 一 数据的总体描述 1 1 统计行数 len df 1 2 统计有多少种不同的值 df lable nunique 1 3 对 列 中每种不同的值 进行计数 df lable value count
  • 俄罗斯套娃信封问题

    354 俄罗斯套娃信封问题 from functools import cmp to key def mycmp a b 自定义比较器 先按第一个元素升序排序 第一个元素相同的 按照第二个元素降序排列 1 代表保持不变 1 代表交换顺序 p
  • 找不到MSVCR120.dll

    问题 在windos平台启动Mysql5 7时提示 找不到MSVCR120 dll 无法执行代码 处理 安装对应的dll动态库程序 安装程序下载地址下载地址
  • DA转换原理及实现

    这一篇介绍D A转换原理以及在TX 1C上的接线方式 实现方法 再用一个例子来加深理解 D A转换原理及参数指标 1 基本原理 数字量是二进制代码数位组合而来的 每位都有一定的权重 在D A转换中 怎么样把这些权重以合适的方法表示出来是转换
  • 在ubuntu里面安装交叉编译工具(树莓派的)

    交叉编译是什么 为什么要交叉编译 交叉编译 是在一个平台上生成另一个平台上的可执行代码 我们再windows上面编写C51代码 并编译成可执行代码 如xx hex 是在c51上面运行 不是在windows上面运行我们在ubuntu上面编写树