2.5 交叉编译器的安装及配置
前文提到过因为宿主机(开发用计算机)与目标机的处理器结构不同,宿主机一般是x86结构CPU,而目标机一般都是非x86结构,对本项目来说,目标机就是ARM结构。通常使用不同的编译器编译出来的代码只能运行在指定的处理器结构上。因此我们要生成能运行在目标机上的Linux内核、运行支持库、应用程序,则必须在宿主机上安装一套交叉编译器工具链,也就是通常所说的arm-linux-gcc。
获取arm-linux-gcc编译器的途径有两种,一是坚持拿来主义,去网上下载别人已经编译打包好的安装压缩包;二是秉承自力更生的思想,自己从头制作工具链,虽说也有crosstool和crosstool-ng等现成的脚本工具,但其“艰辛”只有尝试过才知道。本人强烈建议“拿来主义”,特别是对于初涉嵌入式领域者。
废话少说,进入安装配置说明,有图有真相。
2.5.1 下载安装
先在/usr/local目录下创建arm目录,如下图所示:
图2-58
下载arm-linux-gcc压缩包到目录/usr/local/arm下,以下示例下载了两个版本,对应的编译gcc版本分别为4.3.3和4.4.0,如下图所示:
图2-59
用tar命令分别解压上图中的两个压缩包,输入命令如下图:
图2-60
解压完毕后,在/usr/local/arm目录下将生成两个新的目录,如下图蓝色字体所示:
图2-61
用mv命令将两个新目录名修改为对应的版本号,如下图所示:
图2-62
2.5.2 环境设置
在输出环境变量之前,为了便于后续各版本的Makefile的统一,利用ln命令建立各版本对应文件统一的软连接名称,如下图所示:
图2-63
上述命令执行完后,列表显示当前目录下文件如下图所示:
图2-64
同理进入/usr/local/arm/4.4.0/bin目录下建立相应软连接。
完成上述工作后,就是输出环境变量,也就是设置PATH变量,PATH变量的设置有多种方法,可以设置全局的,也可设置只针对当前用户的;可以设置为临时输出,也可设置为永久输出。对于arm-linux-gcc建议设置为全局永久输出,在ubuntu下,最简单的方式就是修改/etc/environment文件,如下图所示:
图2-65
调用gedit编辑/etc/environment文件,在下图所示窗口中修改PATH值:
图2-66
将上图中PATH值设置成下图所示值,也就是在其后面加入“:/usr/local/arm/4.3.3/bin”,然后点击右上角“save”按钮保存设置。
图2-67
2.5.3 测试安装配置是否正确
上述修改要生效,必须再次登录,再次登录后,可以用“echo $PATH”和“arm-linux-gcc -v”命令检查是否安装和设置正确,如下图所示:
图2-68
下面进一步通过编译一个简单的hello程序,检验安装配置的正确与否,先用gedit编辑一个简单的hello.c文件,如下图2-69和图2-70所示:
图2-69
图2-70
点击图2-70右上角的“save”按钮,并用arm-linux-gcc编译hello.c文件,如下图2-71所示:
图2-71
如果安装配置正确,编译完毕后,将在当前目录生成hello文件,可以用file命令查看文件类型是否是基于ARM的可执行文件,如图2-72所示:
图2-72