分类: LINUX
2010-12-29 14:50:53
1.首先获取交叉编译器
可以是没有编译的源码,也可以是制作好的。下面列出了下载地址:
在显示的表格中,
Download Sourcery G++ Lite Edition for ARM
Target OS |
Download |
EABI |
|
uClinux |
|
GNU/Linux |
|
SymbianOS |
|
GNU/Linux All versions… 项列出的是目标系统为linux的所有版本的编译器
点击进入 All versions… 列出所有版本的编译器
选择Sourcery G++ Lite 2009q1-203 显示如下图:
其中 IA32 GNU/Linux TAR 是制作好的编译器,Source TAR是源码,我们下载制作好的编译器,同时还得下载datasheet和用户手册(started Guide(pdf))
注:datasheet 是介绍Gcc和Glibc的版本号,用户手册是介绍怎么使用。
点击IA32 GNU/Linux TAR 则下载名为:
arm-2009q1-203-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2的压缩文件
2.配置编译器
1)解压刚下载的压缩文件
命令:tar –jvxf arm-2009q1-203-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2
则产生一个arm-2009q1目录,进入目录。
编译器二进制文件全在/bin目录下面。
2)编译器参数设置
该编译器支持三种版本的cpu,分别是armv4t、armv5t和armv7t。默认支持的是armv5t的cpu。由于本人的开发板是tq2440.属于armv4t的cpu。所以在编译的时候需要设置相应的参数。对应的命令是:arm-none-linux-gnueabi-gcc -march=armv4t $* filename
为了方便采用tq手册中的方法。在/bin目录下面建立若干个可执行脚本,分别命名为:arm-linux-xxx(xxx代表的就是同目录下的arm-none-linux-gnueabi-xxx中的xxx) 然后在脚本文件中添加如下内容:
!#/bin/sh
exec arm-none-linux-gnueabi-xxx -march=armv4t $*(手册上漏写了exec ,这让我痛苦额很久)
注意:实际上只要对gcc gcc-
然后我们需要高明白两件事情:
1、 我们所需要使用的交叉编译器的库(lib)的路径是:arm-none-linux-gnueabi/libc/armv4t/lib/目录下的,我们制作文件系统是就是使用该目录下的库;
2、 我们所需要使用的头文件在arm-none-linux-gnueabi/libc/usr/include/目录下的。
然后我们添加编译QT所必须的库:jpegser.v6.tar.gz、libpng、libz和libuuid(e2fprogs),我们在一直好这些库之后,需要将其拷贝到前面提到的目录中(包括lib和include)。
如果以后遇到某程序需要的库,自行编译后添加到编译器中就可以了。到此适合我们的交叉编译器的初步制作算是结束了,然后我们可以将其打包备份。
3)环境变量配置
我们需要的交叉编译器配置成功后,我们需要做一件事就是让我们的编译器处处可以用。这就需要多我们的环境变量进行配置了。用vi或gedit打开.bash_profile文件
在PATH变量中加入如下路径:/home/arm-cross/arm-2009q1/bin
我的编译器是放在/home/arm-cross/目录下的。
重启环境变量或重启计算机就好了。
如此:自己制作的编译器就制作成功了。当要注意的一定,这个编译支持EABI技术的,所以要求编译的目标内核也要支持这个技术,linux
chinaunix网友2011-01-03 15:08:33
很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com