进行嵌入式开发,安装arm-linux-gcc交叉编译工具链是绕不过的问题,但是安装过程中经常出现问题,结合网上的介绍和本人的实践,整理了这个笔记。
所谓的搭建交叉编译环境,即安装、配置交叉编译工具,之所以这么做是因为平时我们用的PC机大部分是inter和AMD公司的x86_64平台,而嵌入式设备以arm系列为主, 使用相同的gcc编译出来的程序不能通用,所以要将arm版的gcc装到pc上,在该环境下编译出嵌入式Linux系统所需的操作系统、应用程序等,然后再上传到目标机上。
Linux版本:64位Ubuntu 12.04 内核版本:Linux 3.5.0 交叉编译器版本:arm-linux-gcc-4.4.3 交叉编译器
交叉编译工具链其实就是编译程序的集合,是为了编译、链接、处理和调试跨平台体系结构的程序代码。对于交叉开发的工具链来说,在文件名称上加了一个前缀,用来区别本地的工具链。例如,arm-linux-表示是对arm的交叉编译工具链;arm-linux-gcc表示是使用gcc的编译器。除了体系结构相关的编译选项以外,其使用方法与Linux主机上的gcc相同,所以Linux编程技术对于嵌入式同样适用。不过,并不是任何一个版本拿来都能用,各种软件包往往存在版本匹配问题。例如,编译内核时需要使用arm-linux-gcc-4.3.3版本的交叉编译工具链,而使用arm-linux-gcc-3.4.1的交叉编译工具链,则会导致编译失败。
那么gcc和arm-linux-gcc的区别是什么呢?区别就是gcc是linux下的C语言编译器,编译出来的程序在本地执行,而arm-linux-gcc用来在linux下跨平台的C语言编译器,编译出来的程序在目标机(如ARM平台)上执行,嵌入式开发应使用嵌入式交叉编译工具链。
安装步骤
1、将压缩包arm-linux-gcc-4.4.3.tar.gz存放在一个目录下,这个目录就是你等会解压缩的目录,以后这个目录就不能随便删掉了,我的存放路径是 /home/song/software,如下图,记住这个路径,等会还会用到。
2、使用tar命令:tar zxvf arm-gcc-4.4.3.tar.gz将software文件夹下的arm-linux-gcc-4.4.3.tar.gz解压缩安装到当前目录下如下图
通过下图可以看到解压成功了,并且解压后的文件存放在了/home/song/software/opt/FriendlyARM/toolschain/4.4.3文件夹下,如下图所示,这个存放路径可得记住,如下图
【注】上面是参考博客里写的,一般情况下,home目录下的文件我们经常会动,但是arm-gcc等常用的工具最好放在固定的位置,可以使用下面的命令解压,然后文件就非常规范地解压到了/opt/FirendlyARM/toolschain/4.4.3下。如果以后想安装其他工具链也不会相互影响。
tar zxvf arm-linux-gcc.4.4.3 -C /
3、接下来配置系统环境变量,把交叉编译工具链的路径添加到环境变量PATH中去,这样就可以在任何目录下使用这些工具。记下上一步中的安装路径,使用命令:vim /etc/profile 编辑profile文件,添加环境变量。
在profile中最后一行添加: export PATH=$PATH:/home/song/software/opt/FriendlyARM/toolschain/4.4.3/bin 这个路径就是那个bin目录所在的路径,可能你的不一样,按照你实际的目录填就可以了,如下图32行
编写完保存就好了
4、使用命令:source /etc/profile 使环境变量生效
5、在终端上输入命令 arm-linux 再按Tab键,可以看到下图,说明环境变量设置成功了
6、使用命令:arm-linux-gcc -v 会出现下面的错误提示:/home/song/software/opt/FriendlyARM/toolschain/4.4.3/bin/arm-linux-gcc: 15: exec: /home/song/software/opt/FriendlyARM/toolschain/4.4.3/bin/.arm-none-linux-gnueabi-gcc: not found
说是出现这种问题的原因是由于Ubuntu12.04用的是64位的,解决方法就是使用命令:sudo apt-get install ia32-libs 装一些32位的库,这个文件有200MB以上,比较大,直接安装即可。
7、待安装完32位的库之后,再使用命令:arm-linux-gcc -v,这一次就成功了,如下图
8、验证,编译一个hello.c文件
使用命令:arm-linux-gcc hello.c -o hello 看是否编译成功
可见成功生成了二进制文件。
本文转自下面的链接:http://www.linuxidc.com/Linux/2013-06/85902.htm
如果想更全面地学习配置PATH环境变量的方法,有个不错的博客,链接为:http://blog.sina.com.cn/s/blog_712a042601019t9j.html