1.为什么需要交叉编译工具
宿主机运行的是标准Linux操作系统,编译出的程序却需要在目标机的Linux上跑,这就叫交叉编译,需要使用交叉编译器,之前我们已经使用过arm-none-eabi-gcc
编译STM32的程序,这个编译器的目标系统是ARM,不运行操作系统,仅运行前后台程序,这里我们ARM开发板运行了Linux操作系统,所以不能使用这个编译器,需要使用arm-none-linux-gnueabi-gcc
交叉编译器。
2.安装交叉编译工具
2.1.下载交叉编译工具
arm-none-linux-gnueabi-gcc下载
下载解压版:
解压:
tar -jxf arm-2014.05-29-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2
移动到/usr下面:
进入目录查看,bin下存放着我们需要的工具:
2.2.设置环境变量
将上一步中工具存放的位置添加到用户环境变量,使用vim ~/.bashrc
,然后在最后添加:
export PATH=$PATH:/usr/arm-2014.05/bin
然后使用命令source ~/.bashrc
更新系统路径,使添加的环境变量立即生效:
然后输入arm-none-linux
,连按tab
,检查是否可以自动补全,如果可以,则安装成功:
2.3.添加32位库支持(64位系统)
如果是64位操作系统,这个时候还不能使用,只能自动补全,但不能执行:
解决方案 —— 安装库:
扫描二维码关注公众号,回复:
5420392 查看本文章
sudo apt-get install libc6-i386
再次查看gcc版本,成功:
3.交叉编译器的使用
arm-none-linux-gnueabi-gcc和之前的gcc使用无太大差异,示例如下。
先编辑文件:
然后使用交叉工具链编译:
编译完成后,接下来可将生成的可执行文件传递到目标板上运行。