参考前人的经验,结合自己实践:
1、首先下载arm-linux-gcc-4.4.3.tar.gz到任意目录下,然后解压。
注意,arm-linux-gcc-4.4.3.tar.gz解压出来是在/opt/FriendlyARM/toolschain/4.4.3中的。
2、将arm-linux-gcc
3、在/usr/local/下建立
mkdir
chmod
4、把
cp
5、修改环境变量,把交叉编译器的路径加入到PATH。
修改/etc/profile文件(此文件只对当前用户适用)
vim
在最后加上export
若上面不加入环境变量,要运行arm-linux-gcc这个程序,则每次都要把arm-linux-gcc的完整路径写出来。如:/usr/local/arm/4.4.3/bin
这样非常的麻烦,所以加到path里面,让电脑知道这个程序在哪里。
6、立即使新的环境变量生效,不用重启电脑:
source
7、检查是否将路径加入到PATH:
echo
显 示内容/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr /games:/usr/local/arm/4.
8、测试是否安装成功
arm-linux-gcc
Using
Target:
Configured
Thread
gcc
9、小试牛刀
vim下编写hello.c程序。
#include <stdio.h>
int main(){
printf("hello!\n");
return 0;
}
#arm-linux-gcc hello.c -o hello (与gcc hello.c -o hello使用方法一样)。
有如下错误:
/usr/local/FriendlyARM/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 /usr/local/FriendlyARM/toolschain/4.4.3/lib/libppl_c.so.2)
/usr/local/FriendlyARM/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 /usr/local/FriendlyARM/toolschain/4.4.3/lib/libppl.so.7)
原因:strings /usr/lib/libstdc++.so.6 | grep GLIBC,返回结果没有GLIBCXX_3.4.9,接着输入ls -l /usr/lib/libstdc++.so.6 ,结果为:
lrwxrwxrwx 1 root root 18 02-13 19:06 /usr/lib/libstdc++.so.6 -> libstdc++.so.6.0.8
libstdc++.so.6是个软链接,它链接到libstdc++.so.6.0.8。而libstdc++.so.6.0.8,没有`GLIBCXX_3.4.9'。版本过低。
解决办法:
一、网上下载libstdc++.so.6.0.10。放到/urs/lib目录下。
二、删除libstdc++.so.6。rm -rf /usr/lib/libstdc++.so.6。
三、重做libstdc++.so.6。软链接,ln -s /usr/lib/libstdc++.so.6.0.10 /usr/lib/libstdc++.so.6.
然后,重新输入#arm-linux-gcc hello.c -o hello。可以看到编译成功。运行#hello,"cannot execute binary file".
arm-linux-gcc编译的文件只能在arm开发板上运行,所以此处提示正确。
//后半部分解决方法用于出现libstdc++.so.6路径找不到的问题。