linux 交叉编译器的安装和编译时参见错误
在网上下载arm-linux-gcc-4.4.3.tar.gz,放到/home/ross下
1、解压#tar -zxvf arm-linux-gcc-4.4.3.tar.gz生成 opt 文件夹
2、将opt文件夹拷贝到文件夹usr/local/。cp -rf opt /usr/local
cd /usr/local/
(交叉编译程序集都在/usr/local/opt/FrendlyARM/4.4.3)
3、修改环境变量,将交叉编译器的路径加入到PATH。
vi /etc/profile
在最后一行加上#export PATH=$PATH:/usr/local/FriendlyARM/toolschain/4.4.3/bin
(注意:要登入root下进行操作否则无法保存)
其实,直接采用方法三即可。
4、立即使新的环境变量生效。
检查是否将路径加入到PATH: # echo $PATH 显示的内容中有/usr/local/FriendlyARM/toolschain/4.4.3/bin,说明已经将交叉编译器的路径加入PATH。
5.立即使新的环境变量生效。
source /etc/profile
6、测试是否安装成功
# arm-linux-gcc -v 显示arm-linux-gcc信息和版本。arm-linux-gcc成功安装。
7、小试牛刀。
vi下编写hello.c程序。
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开发板上运行,所以此处提示正确。
浙公网安备 33010602011771号