交叉编译
概念
一个平台上生成另一个平台上的可执行程序;如x86架构宿主机生成ARM目标机执行程序 (同操作系统)。
为什么要交叉编译?
1、目标平台资源匮乏,无法运行所需编译器
2、目标平台还没有搭建,操作系统都没有,何况编译器。操作系统也是代码也需要编译。
平台的两要素
1、bootloader
2、操作系统核心(内核)
宿主机(host)
编辑和编译程序的平台,一般是x86的PC机,通常称为主机。
目标机(target)
用户开发的系统,通常是非x86平台的。宿主机交叉编译后的程序在目标机上运行。
交叉编译需要用到的工具
交叉编译器(交叉编译工具链)
交叉编译链的安装
获得编译包
一般都是厂家配套给出(直接给,或者给出下载链接等),拷贝/克隆到宿主机解压缩
树莓派git地址https://github.com/raspberrypi/tools.git
可以直接下载压缩包然后传输给宿主机;也可以直接通过克隆到宿主机
git clone https://github.com/raspberrypi/tools.git // 克隆的方式
配置环境变量(追加就好了)
查找编译器路径(位置)
/home/nianxing_su/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin
显示当前环境变量
echo $PATH
临时有效
export PATH=$PATH:/home/nianxing_su/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin
export PATH=$PATH:/home/nianxing_su/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin
追加新的环境变量
export PATH=$PATH:编译器绝对路径
配置环境变量 这个是固定的 后面跟编译工具的绝对路径(那个用户目录下)
永久有效
vim ~/.bashrc // 当前用户家目录下.bashrc文件 把环境变量添加到这个文件
export PATH=$PATH:/home/nianxing_su/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin // 选一个即可
export PATH=$PATH:/home/$(whoami)/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin
source /home/nianxing_su/.bashrc // 环境变量更新