【转】sourcery g++ lite 建立交叉编译环境

本文转自:http://my.chinaunix.net/space.php?uid=22666248&do=blog&id=207336

 

1.首先获取交叉编译器

可以是没有编译的源码,也可以是制作好的。下面列出了下载地址:

http://www.codesourcery.com/sgpp/lite/arm/portal/subscription?@template=lite

这是2011.4.3号,我访问时的界面:

 

Download Sourcery G++ Lite Edition for ARM

Target OS Download
EABI Sourcery G++ Lite 2010.09-51
All versions...
uClinux Sourcery G++ Lite 2010.09-58
All versions...
GNU/Linux Sourcery G++ Lite 2010.09-50
All versions...
SymbianOS Symbian ADT Sourcery G++ Lite 4.4-172
All versions...

GNU/Linux All versions… 项列出的是目标系统为linux的所有版本的编译器

点击进入 All versions… 列出所有版本的编译器

 

    我们下载 GNU/Linux 版中的,

Download MD5 Checksum
Recommended Packages
IA32 GNU/Linux Installer 8d3770db21c8ba685bf237655baa06a3
IA32 Windows Installer e5b2326adf1d04853cbe621567f08e06
Advanced Packages
IA32 GNU/Linux TAR f9dbd7a2daf20724e013cc4b5b64d62f
IA32 Windows TAR 2cc71df1d218f06be295468735718ab8
Source TAR 841081740c155016364bcd979b5c06e9

 

其中 IA32 GNU/Linux TAR 是制作好的编译器,Source TAR是源码,我们下载制作好的编译器,同时还得下载datasheet和用户手册(started Guide(pdf))

注:datasheet 是介绍Gcc和Glibc的版本号,用户手册是介绍怎么使用。

 

我们下载 IA32 GNU/Linux TAR  :这是制作好的交叉编译器

arm-2010.09-50-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2

 

2.配置编译器

1)解压刚下载的压缩文件

命令:tar jvxf arm-2010.09-50-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2

则产生一个arm-2010.09目录,进入目录。

编译器二进制文件全在/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-4.5.1 和g++这三个制作可执行脚本就可以了。而针对其他的使用命令:ln -s arm-none-linux-gnueabi-xxx arm-linux-xxx 做成链接指向对应的编译器就可以了。

这是新建的arm-linux-gcc脚本

  1. #!/bin/sh
  2. exec arm-none-linux-gnueabi-gcc -march=armv4t $*

这是 建立链接,和修改过的

 

然后我们需要高明白两件事情:

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)环境变量配置

配置文件在 /etc/enviroment
  1.

  1. sudo cp /etc/enviroment /etc/environmet.old

  2.

  1. sudo vim /etc/enviroment
  2. 修改如下:我们添加了 /home/ywx/arm-cross/arm-2010.09/bin,因为我们解压文件到了/home/ywx/arm-corss下

  3. PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/ywx/arm-cross/arm-2010.09/bin:"

 

重启环境变量或重启计算机就好了。我们需要重启计算机


如此:自己制作的编译器就制作成功了。当要注意的一定,这个编译支持EABI技术的,所以要求编译的目标内核也要支持这个技术,linux2.6.16以后的内核都支持了。之前的交叉编译器不支持EABI技术。

 

参考资料: TQ 移植手册

           http://www.dnbcw.com/biancheng/linux/ronu288152.html

你可能感兴趣的:(【转】sourcery g++ lite 建立交叉编译环境)