当前位置: 首页 > news >正文

交叉编译工具链的安装、配置、使用

一、交叉编译的概念

交叉编译是在一个平台上生成另一个平台上的可执行代码。

编译:一个平台上生成在该平台上的可执行文件。

例如:我们的Windows上面编写的C51代码,并编译成可执行的代码,如xx.hex.在C51上面运行。

            我们在Ubuntu上面编写的树莓派的代码,并编译成可执行代码,如a.out.在树莓派上面运行。

二、为什么要交叉编译

(1)平台上不允许或者不能安装我们所需的编译器,比如51(内存比较小);

(2)因为目的平台上资源贫乏,无法运行我们所需的编译器;

三、平台运行至少需要两样东西

1.bootlosder(启动引导代码)

2.操作系统

四、交叉编译用到什么工具?

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

五、交叉编译工具链的安装

5.1 工具链下载方式:网站下载

http://github.com/raspberypi/

 5.2.把下载的包放到 ubuntu 上,并解压:

unzip tools-master.zip

5.3.进入到 /home/clc/SYSTEM/tools-master/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin 目录下:

 交叉编译工具

此时我们只能在这个目录中进行编译,为了更方便编译和能够让编译工具能在其他目录中进行编译,就要我们配置环境变量。

5.4.配置环境变量

1.永久有效

echo $PATH        显示当下环境变量

export   PATH=    配置环境变量        

vi   /home/clc/.bashrc

 G  跳转到文件尾部  gg  跳转到文件开头 

2.加载配置文件,马上生效配置

source  /home/clc/.bashrc

 六、交叉编译的使用

 6.1.检查交叉编译工具

arm-linux-gnueabihf-gcc -v (4.8.3的版本)

6.2.交叉编译 

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

6.3.把编译生成的可执行文件发到树莓派上  

 scp  clientInPi  pi@192.168.100.3:/home/pi

 指令   文件名   开发板用户名@开发板地址:开发板的绝对路径

6.4.带wiringPi库的交叉编译如何进行 

  • 正常我们先要交叉编译wiringPi库,编译出的库适合树莓派,这时候交叉编译可执行程序,链接库的格式也是正确的。

  • 通过-I  -L来指定

问题记录:

 arm-linux-gnueabihf-gcc switchDz.c -I /home/CLC/lessonPI/WiringPi/wiringPi -lwiringPi
/home/CLC/lessonPI/tools-master/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/../lib/gcc/arm-linux-gnueabihf/4.8.3/../../../../arm-linux-gnueabihf/bin/ld: cannot find -lwiringPi
collect2: error: ld returned 1 exit status

原因:链接的库的格式不对,是宿主机的平台

如何解决呢?

#通过 -I -L 来指定
arm-linux-gnueabihf-gcc switchDz.c -I /home/CLC/lessonPI/WiringPi/wiringPi -L. -lwiringPi -o crossCompBinswitchDz
/*
1.-I 指定头文件路径
2.-L. 从当前路径去找
3.-o 重命名
*/

 6.5 SCP过程中存在的问题

问题一:

解决方案:查看这篇博客 解决scp命令pemission denied,please try again的问题

问题二:SSHD无法重启,权限不足问题

看这篇博客:关于sshd服务无法开启的问题集合_sshd服务启动失败_CheungChunChiu的博客-CSDN博客【代码】关于sshd服务无法开启的问题集合。_sshd服务启动失败https://blog.csdn.net/qq_30883899/article/details/131636656如何修改Linux系统的 /etc/ssh/sshd_config 文件 "/etc/ssh/sshd_config" E212: Can't open file for writin_是丽丽哇的博客-CSDN博客第一步:我们使用命令行vim /etc/ssh/sshd_config 执行修改,强制保持 :wq! 系统不让我们修改这个文件"/etc/ssh/sshd_config""/etc/ssh/sshd_config" E212: Can't open file for writingPress ENTER or type command to continue  既然不让我...https://blog.csdn.net/u010883578/article/details/90201160最后提醒一句一定要查看IP是否正确,踩过坑!

相关文章:

交叉编译工具链的安装、配置、使用

一、交叉编译的概念 交叉编译是在一个平台上生成另一个平台上的可执行代码。 编译:一个平台上生成在该平台上的可执行文件。 例如:我们的Windows上面编写的C51代码,并编译成可执行的代码,如xx.hex.在C51上面运行。 我们在Ubunt…...

【C++ 进阶】继承

一.继承的定义格式 基类又叫父类,派生类又叫子类; 二.继承方式 继承方式分为三种: 1.public继承 2.protected继承 3.private继承 基类成员与继承方式的关系共有9种,见下表: 虽然说是有9种,但其实最常用的还…...

Git使用详细教程

1. cmd面板的常用命令 clear:清屏cd 文件夹名称----进入文件夹cd … 进入上一级目录(两个点)dir 查看当前目录下的文件和文件夹(全拼:directory)Is 查看当前目录下的文件和文件夹touch 文件名----创建文件echo 内容 > 创建文件名----创建文件并写入内容rm 文件名…...

小程序 表单验证

使用 WxValidate.js 插件来校验表单数据 常用实例方法 名称返回类型描述checkForm(e)boolean验证所有字段的规则,返回验证是否通过。valid()boolean返回验证是否通过。size()number返回错误信息的个数。validationErrors()array返回所有错误信息。addMethod(name…...

本地仓库推送至远程仓库

1. 本地生成ssh密钥对 ssh-keygen -t rsa -C 邮箱2. 添加公钥到gitlab/github/gitee上 打开C:\Users\用户名\.ssh目录下生成的密钥文件id_rsa.pub,把内容复制到如下文本框中 删除Expiration date显示的日期,公钥有效期变成永久,之后点Add K…...

【Unity2D】角色动画的切换

动画状态转换 第一种方法是设置一个中间状态,从中间状态向其余各种状态切换,且各状态向其他状态需要设置参数 实现动作转移时右键点击Make Transition即可 实现动画转移需要设置条件 点击一种动画到另一种动画的线 ,然后点击加号添加Condi…...

【MATLAB第62期】基于MATLAB的PSO-NN、BBO-NN、前馈神经网络NN回归预测对比

【MATLAB第62期】基于MATLAB的PSO-NN、BBO-NN、前馈神经网络NN回归预测对比 一、数据设置 1、7输入1输出 2、103行样本 3、80个训练样本,23个测试样本 二、效果展示 NN训练集数据的R2为:0.73013 NN测试集数据的R2为:0.23848 NN训练集数据的…...

深度剖析C++ 异常机制

传统排错 我们早在 C 程序里面传统的错误处理手段有: 终止程序,如 assert;缺陷是用户难以接受,说白了就是一种及其粗暴的手法,比如发生内存错误,除0错误时就会终止程序。 返回错误码。缺陷是需要我们自己…...

adb no permissions (user *** is not in the plugdev group)

首次配置ubuntu下的adb 环境,执行了adb device命令会出现以下问题 lvilvi-PC:~/develop/android/sdk/platform-tools$ adb devices List of devices attached 123699aac6536d65 no permissions (user lvi is not in the plugdev group); see [http://develo…...

【外卖系统】分类管理业务

公共字段自动填充 需求分析 对于之前的开发中,有创建时间、创建人、修改时间、修改人等字段,在其他功能中也会有出现,属于公共字段,对于这些公共字段最好是在某个地方统一处理以简化开发,使用Mybatis Plus提供的公共…...

es报错[FORBIDDEN/12/index read-only / allow delete (api)]

报错 [FORBIDDEN/12/index read-only / allow delete (api)] es磁盘满了 postman请求 put 请求 http://loclahost:9200/_settings {"settings": {"index": {"blocks": {"read_only_allow_delete": "false"}}} }...

关于网络通信安全协议的一些知识(ssl,tls,CA,https)

首先了解一下http协议的变迁。 http1.0默认短连接,1.1默认长连接并且可以管道传输,但是存在队头阻塞问题; https就是在tcp和http之间加了SSL/TLS层。 http2也是安全的,改进是hpack二进制和编码压缩减小体积,stream没有…...

Generative Diffusion Prior for Unified Image Restoration and Enhancement 论文阅读笔记

这是CVPR2023的一篇用diffusion先验做图像修复和图像增强的论文 之前有一篇工作做了diffusion先验(Bahjat Kawar, Michael Elad, Stefano Ermon, and Jiaming Song, “Denoising diffusion restoration models,” arXiv preprint arXiv:2201.11793, 2022. 2, 4, 6,…...

GAMES101 笔记 Lecture13 光线追踪1

目录 Why Ray Tracing?(为什么需要光线追踪?)Basic Ray Tracing Algorithm(基础的光线追踪算法)Ray Casting(光线的投射)Generating Eye Rays(生成Eye Rays) Recursive(Whitted-Styled) Ray Tracing Ray-Surface Intersection(光线和平面的交点)Ray Rquation(射线方…...

【多模态】21、BARON | 通过引入大量 regions 来提升模型开放词汇目标检测能力

文章目录 一、背景二、方法2.1 主要过程2.2 Forming Bag of Regions2.3 Representing Bag of Regions2.4 Aligning bag of regions 三、效果 论文:Aligning Bag of Regions for Open-Vocabulary Object Detection 代码:https://github.com/wusize/ovdet…...

2023“Java 基础 - 中级 - 高级”面试集结,已奉上我的膝盖

Java 基础(对象线程字符接口变量异常方法) 面向对象和面向过程的区别? Java 语言有哪些特点? 关于 JVM JDK 和 JRE 最详细通俗的解答 Oracle JDK 和 OpenJDK 的对比 Java 和 C的区别? 什么是 Java 程序的主类&…...

开源项目-erp企业资源管理系统(毕设)

哈喽,大家好,今天给大家带来一个开源项目-erp企业资源管理系统,项目通过ssh+oracle技术实现。 系统主要有基础数据,人事管理,采购管理,销售管理,库存管理,权限管理模块 登录 主页 基础数据 基础数据有商品类型,商品,供应商,客户,仓库管理功能...

Leetcode刷题---C语言实现初阶数据结构---单链表

1 删除链表中等于给定值 val 的所有节点 删除链表中等于给定值 val 的所有节点 给你一个链表的头节点head和一个整数val,请你删除链表中所有满足Node.valval的节点,并返回新的头节点 输入:head [1,2,6,3,4,5,6], val 6 输出:[…...

opencv hand openpose

使用opencv c 来调用caffemodel 使用opencv 得dnn 模块调用 caffemodel得程序,图片自己输入就行,不做过多得解释,看代码清单。 定义手指关节点 const int POSE_PAIRS[20][2] { {0,1}, {1,2}, {2,3}, {3,4}, // thumb {0,5}, {5,6}, {6,7}…...

flutter fl_chart 柱状图 柱条数量较多 实现左右滑动 固定y轴

一、引入插件 pub.dev:fl_chart package - All Versions 根据项目版本,安装可适配的 fl_chart 版本 二、官网柱状图示例 github参数配置:(x轴、y轴、边框、柱条数据、tooltip等) https://github.com/imaNNeo/fl_c…...

CAN学习笔记1:计算机网络

计算机网络 1 概述 计算机网络就是把多种形式的计算机用通信线路连接起来,并使其能够互相进行交换的系统。实际上,计算机网络包括了计算机、各种硬件、各种软件、组成网络的体系结构、网络传输介质和网络通信计数。因此,计算机网络是计算机…...

NAND flash的坏块

NAND flash的坏块 1.为什么会出现坏块 由于NAND Flash的工艺不能保证NAND的Memory Array(由NAND cell组成的阵列)在其生命周期中保持性能的可靠(电荷可能由于其他异常原因没有被锁起来。因此,在NAND的生产中及使用过程中会产生坏…...

代码随想录算法训练营第二十五天 | 读PDF复习环节3

读PDF复习环节3 本博客的内容只是做一个大概的记录,整个PDF看下来,内容上是不如代码随想录网站上的文章全面的,并且PDF中有些地方的描述,是很让我疑惑的,在困扰我很久后,无意间发现,其网站上的讲…...

18.Netty源码之ByteBuf 详解

highlight: arduino-light ByteBuf 是 Netty 的数据容器,所有网络通信中字节流的传输都是通过 ByteBuf 完成的。 然而 JDK NIO 包中已经提供了类似的 ByteBuffer 类,为什么 Netty 还要去重复造轮子呢?本节课我会详细地讲解 ByteBuf。 JDK NIO…...

#P0999. [NOIP2008普及组] 排座椅

题目描述 上课的时候总会有一些同学和前后左右的人交头接耳,这是令小学班主任十分头疼的一件事情。不过,班主任小雪发现了一些有趣的现象,当同学们的座次确定下来之后,只有有限的 DD 对同学上课时会交头接耳。 同学们在教室中坐…...

Sentinel 容灾中心的使用

Sentinel 容灾中心的使用 往期文章 Nacos环境搭建Nacos注册中心的使用Nacos配置中心的使用 熔断/限流结果 Jar 生产者 spring-cloud-alibaba:2021.0.4.0 spring-boot:2.6.8 spring-cloud-loadbalancer:3.1.3 sentinel:2021.0…...

深度学习中简易FC和CNN搭建

TensorFlow是由谷歌开发的PyTorch是由Facebook人工智能研究院(Facebook AI Research)开发的 Torch和cuda版本的对应,手动安装较好 全连接FC(Batch*Num) 搭建建议网络: from torch import nnclass Mnist_NN(nn.Module):def __i…...

【多模态】20、OVR-CNN | 使用 caption 来实现开放词汇目标检测

文章目录 一、背景二、方法2.1 学习 视觉-语义 空间2.2 学习开放词汇目标检测 三、效果 论文:Open-Vocabulary Object Detection Using Captions 代码:https://github.com/alirezazareian/ovr-cnn 出处:CVPR2021 Oral 一、背景 目标检测数…...

网络编程 IO多路复用 [select版] (TCP网络聊天室)

//head.h 头文件 //TcpGrpSer.c 服务器端 //TcpGrpUsr.c 客户端 select函数 功能&#xff1a;阻塞函数&#xff0c;让内核去监测集合中的文件描述符是否准备就绪&#xff0c;若准备就绪则解除阻塞。 原型&#xff1a; #include <sys/select.…...

数学建模学习(7):单目标和多目标规划

优化问题描述 优化 优化算法是指在满足一定条件下,在众多方案中或者参数中最优方案,或者参数值,以使得某个或者多个功能指标达到最优,或使得系统的某些性能指标达到最大值或者最小值 线性规划 线性规划是指目标函数和约束都是线性的情况 [x,fval]linprog(f,A,b,Aeq,Beq,LB,U…...

辽宁省人民政府网站官网/营销策划推广公司

在我们用pl/sql的Tools导出用户对象时&#xff0c;例如导出一个表&#xff0c;则导出的t_test.sql的前几行如下&#xff1a; spool test.log prompt prompt Creating table t_test prompt prompt 这里的prompt的作用相当于一般的操作系统命令echo&#xff0c;输出后面的信…...

网站建设自主开发的三种方式/北京seo薪资

转载&#xff1a;http://softwareblogs-zho.intel.com/2009/02/04/1071/ 程序员的十层楼(1~3层)作者&#xff1a; 周伟明 自西方文艺复兴以来&#xff0c;中国在自然科学方面落后西方很多&#xff0c;软件领域也不例外。当然现在中国的许多程序员们对此可能有许多不同的意见&am…...

网站推广入口/南宁百度seo推广

实例 1、取得 MYSQL 的版本取得 MYSQL 的版本实例 2、创建一个表并且插入数据创建一个表并且插入数据实例 3、 python 使用 slect 获取 mysql 的数据并遍历使用 slect 获取 mysql 的数据并遍历上面的代码&#xff0c;用来将所有的结果取出&#xff0c;不过打印的时候是每行一个…...

phpcms律师网站源码/免费的app推广平台

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2022安全员-A证试题是安全员-A证模拟考试题库的多种练习模式&#xff01;2022年安全员-A证特种作业证考试题库及答案依据安全员-A证新考试大纲。安全员-A证全部考试题库随时根据安全生产模拟考试一点通提高考试通过率…...

网站开发合同注意事项/b站好看的纪录片免费

该项目源代码已经放到Github上&#xff0c;有兴趣可以点击AlgorithmGraphExample 进行访问项目启动,项目使用maven搭建,如果不使用maven导入,请保证有Junit4的jar包在工程中.将项目导入相应IDE,执行AlgorithmInGraphTest的showAlgorithm()方法,即可以执行相应的测试方法.二分查…...

wordpress怎么上传文本/乱码链接怎么用

作用&#xff1a; (1)customRef 用于自定义返回一个ref对象,可以显式地控制依赖追踪和触发响应,接受工厂函数 (2)两个参数分别是用于追踪的 track 与用于触发响应的 trigger&#xff0c;并返回一个一个带有 get 和 set 属性的对象 <template><div id"nav"&…...