交叉编译介绍

1.交叉编译概念
交叉编译是在一个平台上生成另一个平台上的可执行代码。同一个体系结构可以运行不同的操作系统;同样,同一个操作系统也可以在不同的体系结构上运行。
如:在windows上面编写c51代码,并编译可执行文件,但是在c51运行。
为什么要交叉编译?
(1)目的平台不允许或不能够安装我们所需的编译器
(2)目的平台资源匮乏,无法运行我们所需编译器;
(3)有时目的平台还没有建立,连操作系统都没有,操作系统也是代码,也要编译。
宿主机(host) :编辑和编译程序的平台,一般是基于X86的PC机,通常也被称为主机。
目标机(target):用户开发的系统,通常都是非X86平台。host编译得到的可执行代码在target上运行。
工具:我们建议使用现成的脚本来生成交叉编译器,因为在配置交叉编译器时,会经常使用一些难以理解的开关项。
交叉编译工具链
2.交叉编译工具链的安装
https://github.com/raspberrypi/
unzip tool-master.zip //解压
tools-master/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf-gcc
2.1临时有效
添加PATH临时环境变量:
echo $PATH 查看当前环境变量
/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/opt/FriendlyARM/toolschain/4.5.1/bin
export PATH=/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:加上arm-linux-gnueabihf-gcc所在目录
2.2永久有效
修改工作目录下的.bashrc文件
将export PATH=/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:加上arm-linux-gnueabihf-gcc所在目录 添加到该文件最后
source .bashrc //更新一下.bashrc
3.将linux下的文件在linux环境下利用交叉编译工具编译并发送到树莓派上
arm-linux-gnueabihf-gcc test1.c -o test2
scp test2 pi@树莓派ip:想要放到的文件夹 //要求在同一网段下
4.带WiringPi库的交叉编译
4.1需要先交叉编译WiringPi库,生成对应的的库,这样才能交叉编译源码,并用-I 来指定头文件目录,-L来链接wiringPi库
4.2将树莓派的库拿过来
在树莓派中:cd /usr/lib
查看lib下的软链接 :ls -l wiringPi
在这里插入图片描述
可以看到libwiringPi.so 只是个软链接,实际是libwiringPi.so.2.50
因此需要将此库拿过去
4.3在X86中建立指向该库的软链接
5.软链接
概念:也叫符号链接,类似与Windows的快捷方式;实际上是一个文本文件,包含另一个文件的位置信息;不占用磁盘空间
生产:ln -s 源文件 目标文件
6.硬链接
他会生产一个相同的文件。
生成:ln 源文件 目标文件

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值