arm-linux交叉编译器制作
本文介绍利用crosstool-ng工具制作arm-linu交叉编译器,关于crosstool-ng不在多讲(可以百度),下面以s5pv210处理器为例说明制作过程。
一、安装crosstool-ng
1、获取crosstool-ng
从官方网站获取crosstool-ng,http://crosstool-ng.org/,这里我选择crosstool-ng-1.22.0.tar.bz2版本
2、配置,编译,安装crosstool-ng
解压crosstool-ng-1.22.0.tar.bz2后进入crosstool-ng目录,依次执行./configure、make、make install即可,在./configure时可能会出现错误,一般都是未安装一些小工具,只要按照提示sudo apt-get install xxx安装缺少的的包即可,make install之后会将ct-ng可执行文件安装在/usr/local/bin/目录下。
3、测试crosstool-ng是否安装成功
在任一目录下执行ct-ng -v,若显示crosstool-ng信息就表示安装成功。
二、制作交叉编译器
首先新建个文件夹,作为编译目录,这里我命名为crosstool,然后进入该目录。
1、找模板
从crosstool-ng中的模板中找到和自己目标处理器最接近的一个,使用ct-ng list-samples列出所有模板
可见我的目标处理器s5pv210与arm-cortex_a8-linux-gnueabi最接近,所以就使用它生成配置文件.config,执行ct-ng arm-cortex_a8-linux-gnueabi即可。
2、配置
配置一般需要三部分。
<1>路径配置
进入Paths and misc options
然后配置这两项
编译过程中需要下载一些源码包,Local tarballs directory就是存放这些源码包的目录(一般下载会很慢,可以在编译之前将需要的源码包下载好放在该目录里),若目录不存在一定要建好。
Prefix directory是存放编译后生成的交叉工具链的路径。
<2>目标选项
进入Target options设置如下三项
第一个Emit assembly for cpu表示cpu,若将其清空则会多出两项,分别是arch和tune,一般都设置上。
第二个是FPU处理器,VFP或neon等。
第三个是浮点运算类型,软浮点或硬浮点。
<3>工具链配置
进入ToolsChain options
Tuple's vendor string是供应商字符串,若设置为zyz,则编译后的工具链名字为arm-zyz-linux-gnueabi。
Tuple's alias是工具链的别名,若设置为arm-linux,则编译后会建立工具链的软连接,命名为arm-linux-xx。
3、编译工具链
执行ct-ng build进行编译
若编译成功
然后,设置环境变量即可。
至此,交叉编译器就编译好啦,可以执行arm-linux-gcc -v验证一下。