当前位置: 首页 > 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是否正确,踩过坑!

http://www.lryc.cn/news/101429.html

相关文章:

  • 【C++ 进阶】继承
  • Git使用详细教程
  • 小程序 表单验证
  • 本地仓库推送至远程仓库
  • 【Unity2D】角色动画的切换
  • 【MATLAB第62期】基于MATLAB的PSO-NN、BBO-NN、前馈神经网络NN回归预测对比
  • 深度剖析C++ 异常机制
  • adb no permissions (user *** is not in the plugdev group)
  • 【外卖系统】分类管理业务
  • es报错[FORBIDDEN/12/index read-only / allow delete (api)]
  • 关于网络通信安全协议的一些知识(ssl,tls,CA,https)
  • Generative Diffusion Prior for Unified Image Restoration and Enhancement 论文阅读笔记
  • GAMES101 笔记 Lecture13 光线追踪1
  • 【多模态】21、BARON | 通过引入大量 regions 来提升模型开放词汇目标检测能力
  • 2023“Java 基础 - 中级 - 高级”面试集结,已奉上我的膝盖
  • 开源项目-erp企业资源管理系统(毕设)
  • Leetcode刷题---C语言实现初阶数据结构---单链表
  • opencv hand openpose
  • flutter fl_chart 柱状图 柱条数量较多 实现左右滑动 固定y轴
  • CAN学习笔记1:计算机网络
  • NAND flash的坏块
  • 代码随想录算法训练营第二十五天 | 读PDF复习环节3
  • 18.Netty源码之ByteBuf 详解
  • #P0999. [NOIP2008普及组] 排座椅
  • Sentinel 容灾中心的使用
  • 深度学习中简易FC和CNN搭建
  • 【多模态】20、OVR-CNN | 使用 caption 来实现开放词汇目标检测
  • 网络编程 IO多路复用 [select版] (TCP网络聊天室)
  • 数学建模学习(7):单目标和多目标规划
  • Element UI如何自定义样式