交叉编译器arm-linux-gcc-4.4.3安装

1、解压 tar -zxvf arm-linux-gcc4.4.3.tar.gz -C/(下载地址http://www.cncrk.com/downinfo/31441.html)(    直接解压后就可以 ,-C/会让解压的文件自动放在根目录下指定路径,不用管)
2、设置环境变量:首先 vi ~/.bashrc 
                    然后在最后加上 export PATH=$PATH:/opt/FriendlyARM/toolschain/4.4.3/bin
3、使环境变量立即生效: source ~/.bashrc
4、验证:arm-linux- gcc  -v   ,我的显示如下: 
                aidway@aidway-desktop:~$ arm-linux-gcc -v
                Using built-in specs.
                Target: arm-none-linux-gnueabi
                Configured with: /opt/FriendlyARM/mini2440/build-toolschain/working/src/gcc-4.4.3/configure                --build=i386-build_redhat-linux-gnu --host=i386-build_redhat-linux-gnu --target=arm-none-linux-gnueabi --prefix=/opt/FriendlyARM/toolschain/4.4.3 --with-sysroot=/opt/FriendlyARM/toolschain/4.4.3/arm-none-linux-gnueabi//sys-root --enable-languages=c,c++ --disable-multilib --with-arch=armv4t --with-cpu=arm920t --with-tune=arm920t --with-float=soft --with-pkgversion=ctng-1.6.1 --disable-sjlj-exceptions --enable-__cxa_atexit --with-gmp=/opt/FriendlyARM/toolschain/4.4.3 --with-mpfr=/opt/FriendlyARM/toolschain/4.4.3 --with-ppl=/opt/FriendlyARM/toolschain/4.4.3 --with-cloog=/opt/FriendlyARM/toolschain/4.4.3 --with-mpc=/opt/FriendlyARM/toolschain/4.4.3 --with-local-prefix=/opt/FriendlyARM/toolschain/4.4.3/arm-none-linux-gnueabi//sys-root --disable-nls --enable-threads=posix --enable-symvers=gnu --enable-c99 --enable-long-long --enable-target-optspace
Thread model: posix

gcc version 4.4.3 (ctng-1.6.1)


在终端中编写test.c测试程序


[root@localhost ~]# vi test.c
[root@localhost ~]# arm-linux-gcc test.c -o test
/opt/arm/toolschain/4.4.3/bin/../libexec/gcc/arm-none-linux-gnueabi/4.4.3/cc1: /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.9' not found (required by /opt/arm/toolschain/4.4.3/lib/libppl_c.so.2)
/opt/arm/toolschain/4.4.3/bin/../libexec/gcc/arm-none-linux-gnueabi/4.4.3/cc1: /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.9' not found (required by /opt/arm/toolschain/4.4.3/lib/libppl.so.7)
[root@localhost ~]# 


用以下命令查看


[root@localhost ~]# strings /usr/lib/libstdc++.so.6|grep GLIBCXX
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_FORCE_NEW
[root@localhost ~]# 
可以看到libstdc++.so.6的最高版是GLIBCXX_3.4.8,而不是GLIBCXX_3.4.9,因此需要对libstdc++.so.6进行升级


方法一,参照这篇文章的做法http://wenku.baidu.com/view/ba4f4e222f60ddccda38a01a.html


直接下载较高版本的库libstdc++.so.6.0.10,网址http://download.csdn.net/source/1670346


先删除libstdc++.so.6


[root@localhost ~]# rm /usr/lib/libstdc++.so.6


rm:是否删除 符号链接 “/usr/lib/libstdc++.so.6”? y


[root@localhost ~]# 


然后将下载的libstdc++.so.6.0.10复制到/usr/lib/目录下面


[root@localhost ~]# cp /smbroot/libstdc++.so.6.0.10 /usr/lib/


[root@localhost ~]# 


再建立符号链接


[root@localhost ~]# ln -s /usr/lib/libstdc++.so.6.0.10 /usr/lib/libstdc++.so.6


[root@localhost ~]# 


检验是否替换完成


[root@localhost ~]#  strings /usr/lib/libstdc++.so.6|grep GLIBCXX


GLIBCXX_3.4


GLIBCXX_3.4.1


GLIBCXX_3.4.2


GLIBCXX_3.4.3


GLIBCXX_3.4.4


GLIBCXX_3.4.5


GLIBCXX_3.4.6


GLIBCXX_3.4.7


GLIBCXX_3.4.8


GLIBCXX_3.4.9


GLIBCXX_3.4.10


GLIBCXX_FORCE_NEW


GLIBCXX_DEBUG_MESSAGE_LENGTH


[root@localhost ~]# 


重新测试交叉编译是否能用


[root@localhost ~]# arm-linux-gcc test.c -o test


[root@localhost ~]# 


编译成功,执行


[root@localhost ~]# ./test


bash: ./test: cannot execute binary file


[root@localhost ~]


方法二,(参照网上搜来的办法,还没尝试)


下载最新版本glibc-2.13.tar.gz 包含libstdc++.so.6的库,


然后编译安装glibc 


wget  http://ftp.gnu.org/gnu/glibc/glibc-2.13.tar.gz


下载glibc-linuxthreads


wget http://ftp.gnu.org/gnu/glibc/glibc-linuxthreads-2.13.tar.gz


解压


tar -zxvf glibc-2.13.tar.gz


cd glibc-2.13


tar -zxvf ../glibc-linuxthreads-2.3.2.tar.gz


cd ..


./glibc-2.13/configure --prefix=/usr --disable-profile --enable-add-ons --libexecdir=/usr/lib --with-headers=/usr/include


make


make install


注意点:


1、要将glibc-linuxthreads解压到glibc目录下。


2、不能在glibc当前目录下运行configure。


 三、工具使用


1,编译工具arm-linux-gcc


例如arm-linux-gcc hello.c -o hello


2,反汇编工具arm-linux-gcc 


例如arm-linux-objdump -D -S hello


3,elf文件查看工具arm-linux-readelf


arm-linux-readelf  -a hello (查库所有库)


arm-linux-readelf -d hello (查看动态链接库)

你可能感兴趣的:(交叉编译)