Linux虚拟机如何为树莓派交叉编译?环境变量配置详解
交叉编译
交叉编译是在一个平台上生成另一个平台的可执行代码,例如我们在Windows编写的C51的代码,并编译生成在C51上可执行的xxx.hex文件,这个文件是在C51上运行的而不是在Windows运行的。
为什么要进行交叉编译
- 目的平台资源匮乏,缺少我们需要的编译器,导致某些文件无法编译运行。
- 目的平台还没有建立,连操作系统都没有,因此即使树莓派有自己的操作系统(linux),当树莓派的目的平台还没有建立时一样也要进行交叉编译,因为操作系统也是代码,一样要进行编译。目的平台运行至少需要两种东西:BootLoader(启动引导代码)以及操作系统核心,这也就是为什么需要交叉编译的原因
交叉编译需要的工具
- 交叉编译器
- 目的平台的交叉编译工具链
- 宿主机(Linux虚拟机):编辑和编译程序的平台,一般是基于X86的PC机,通常也被称为主机
- 目标机(目的平台,树莓派):用户开发的系统,通常都是非X86平台,宿主机编译得到的可执行的代码在目标机上运行
Linux虚拟机为树莓派进行交叉编译
下载交叉编译工具链(树莓派)
- 使用命令unzip 解压该zip压缩包

- 进入目录配置环境变量 /tools-master/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin

配置临时有效的环境变量,仅在当前命令窗口有效
1:命令echo $PATH 查看当前环境变量

2:命令export PATH=??将/snap/bin替换成当前路径得到新的环境变量


3:回到工作目录测试交叉编译工具链

配置永久有效的环境变量,所有命令窗口有效
1:回到工作目录,命令sudo vi .bashrc进入隐藏文件bashrc

2:将刚刚配置临时有效的环境变量后新环境变量写入该文件

3:执行命令source .bashrc 让刚刚写入的内容生效

使用交叉编译工具链来交叉编译文件
配置好环境变量后就能在任何目录底下使用交叉编译链来编译文件了

可以看到使用gcc和交叉编译链编译的可执行文件的文件属性不一样,gcc编译的可执行文件属于x86平台,交叉编译链编译的可执行文件属于ARM平台
交叉编译时链接第三方库
由于我们使用的是交叉编译链编译目的平台的可执行文件,因此当我们需要链接第三方库时,该库应该也是目的平台的第三方库,否则该交叉编译链将不认识此库,怎么使用第三方库可以看往期博文。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
linux系统中rsync+inotify实现服务器之间文件实时同步
这篇文章主要介绍了rsync+inotify实现服务器之间文件实时同步,需要的朋友可以参考下2014-11-11
jar包在linux服务器已经运行好但是访问不到地址的问题及解决方法
这篇文章主要介绍了jar包在linux服务器已经运行好但是访问不到地址的问题,解决方案是需要修改防火墙开放的端口,查看防火墙开放的端口,本文给大家介绍的非常详细,需要的朋友可以参考下2022-10-10
Ubuntu20.04桌面安装及root权限开通和ssh安装详解
这篇文章主要介绍了Ubuntu20.04桌面安装及root权限开通和ssh安装详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2020-08-08


最新评论