在嵌入式Linux开发中,无论是应用还是驱动开发,一般都是采用交叉编译的方式,对arm平台进行开发。在很多时候想要平台的可以运行文件都是通过linux编译好后移植到相应的平台上实现再次开发的,但是通过交叉编译环境生成的文件在linux。这样情况下就想要用到相应的交叉编译工具链,来完成程序的编译,生成相应的可执行文件,以适配目标平台的系统架构。
一、获取交叉编译的工具包
我这里使用的是arm-linux-gnueabihf-gcc-6.5.0 的版本来编译u_boot
获取方法 1、官网下载:https://releases.linaro.org/components/toolchain/binaries
下载时注意arm,armel是小端字节序编译器,armeb是大端字节序编译器
2、板卡自带
3、找老大、组长、老师要相应的版本文件
二、将相应的文件移动到linux文件系统中解压(不要使用windos的解压工具解压,不适配)
tar -xvf gcc编译工具链压缩包名称
三、解压完成后可以更改为短一点的名字
mv 编译工具文件名称 版本名称
cd 6.5.0
lib一般放库文件,也就是后缀.lib的
include 一般包含头文件目录
bin表示binary目录,一般都是dll,exe等
然后 进入bin文件 cd bin
获取当前文件的绝对路径
pwd
四、设置全局变量
sudo vim .bashrc
在最后面添加:
PATH=/home/tools/cross-compiler/gcc-linaro-6.5.0-2018.12-i686_arm-linux-gnueabihf/bin:$PATH
中间的地址是上面获取的绝对地址,看情况更改
重新启动环境变量配置:
source .bashrc
最后通过
arm-linux-gnueabihf-gcc -v
然后在最下面就可以看见当前安装的交叉编译版本了。
ps:[P&S]交叉编译工具链配置好环境变量后依然找不到文件
当你的环境是新的时候设置了相关的环境变量还是没有版本号的时候
输入 arm-linux-gcc -v,
提示找不到
bash: /home/tools/cross-compiler/gcc-linaro-6.5.0-2018.12-i686_arm-linux-gnueabihf/bin/arm-linux-g++: No such file or directory
这样的错误
分析:是你当前的系统没有安装32位程序库
解决方法:
sudo apt-get install lsb-core
如果安装了这个还是有问题,还是环境问题再次安装其他的支持库
sudo apt-get install lib32ncurses5
sudo apt-get install lib32z1
最后再次使用:arm-linux-gnueabihf-gcc -v
一般就没啥问题了。
如果还有问题出现在:apt-get install lsb-core这一步,就是你源的问题了,直接百度解决。