树莓派底层开发-----交叉编译

发布于:2022-12-24 ⋅ 阅读:(407) ⋅ 点赞:(0)

目录

1.交叉编译

1.交叉编译

2.为什么要交叉编译? 

3.交叉编译工具链的安装

1.临时有效配置环境变量(临时配置的话我们再开个窗口就没用了)

2.永久有效配置环境变量


1.交叉编译

1.交叉编译

交叉编译:在一个平合生成另外一个平台可执行的代码,

编译:在一个平台上生成在该平台上的可执行代码。
C51/32交叉编译发送在Keil (集成环境上面),windows上面编写51/32代码,不是在wilndows上面运行在ubuntu上面编写树莓派的代码,并且编译成可执行代码,如a.out

2.为什么要交叉编译? 

有时候平台上不允许或者不能够安装我们所需要的编译器,目标平台上的资源匮乏,无法运行我们需要的编译器,比如C51.STM32(flash非常小)

树莓派也需要也需要交叉编译。有时因为平台还没有建立,连操作系统都没有,根本谈不上运行什么编译器,操作系统也是代码,也需要编译。

操作系统要运行有两个条件:

1.BootLoader单片机里面也有BootLoader比如说启动文件,ARM上就是我们的裸机的硬件引导程序还有核心代码

宿主机(host):编译和!编译程序的平台,一般是基于x86的PC机,通常也被称为主机,
目标机(target):用户开发的系统,通常都是非x86的平台,host编译得到的可执行代码在target上面运行

3.交叉编译工具链的安装

~获取源码: https://github.com/raspberrypi/

~从共享文件夹拷贝到工作目录

先回到工作目录创建目录pi

进入pi,把文件拷贝到当前目录里面去       cp  /mnt/hgfs/share/tools-master.zip .

~解压交叉编译工具链

      unzip tools-master.zip

 我们的可执行程序是在arm linus里面的

 补充:软连接不占用内存

-v :查看版本信息 

也可以查看gcc的 直接 gcc -v

 在其他目录就无法运行了,根本就补全不了

 那么如果我们想要在其他地方使用这个gcc的话,我们要把这些路径信息全部敲出来,很麻烦,所以我们可以把当前路径放到变量里面去

~echo $PATH

      获取当前环境变量的值

当前路径(目录)是pwd

把当前目录添加到环境变量里面去

1.临时有效配置环境变量(临时配置的话我们再开个窗口就没用了)

PATH环境变量:

配置格式 :export PATH = 环境变量的前缀: +(想要省去的)

cd /home/hutao/回到工作目录   临时有效,再开个终端就不行了

用户目录没有 软连接 所以 arm-linux-gnueabihf 就行了 

  

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

2.永久有效配置环境变量

修改工作目录下的.bashrc隐藏文件,配置命令终端的

vi /homg/jxj/.bashrc

在文件结尾加入脚本指令:

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


soucre /home/jxj/.bashrc  加载配置文件,马上生效 

再开个终端也可以了 

 交叉编译工具链专门编译arm-linux文件的,上图是arm-linux的gcc

gcc -v 是在乌班图编译的

本文含有隐藏内容,请 开通VIP 后查看