继续,继内核升级完毕后,还是发现交叉编译出错,编译器版本4.4.3,就是光盘附带的。报错:
/usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.9' not found
等等,就是这个意思啦
显然仅升稼核还不行,继续搜索资料,没有。于是联系嵌入式家园,友善的金牌代理哦。叫我去看他们的博客
http://www.cnblogs.com/hanson/archive/2011/06/05/2073076.html 嘿嘿,赞一个,毕竟是金牌代理,大家不用翻了,我贴过来
分析:
执行strings /usr/lib/libstdc++.so.6 | grep GLIBC
返回结果没有GLIBCXX_3.4.9
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
GLIBC_2.0
GLIBC_2.3
GLIBC_2.4
GLIBC_2.3.4
GLIBC_2.1
GLIBC_2.1.3
GLIBC_2.2
GLIBCXX_FORCE_NEW
GLIBCXX_DEBUG_MESSAGE_LENGTH
执行ls -l /usr/lib/libstdc++.so.6
发现/usr/lib/libstdc++.so.6 -> /usr/lib/libstdc++.so.6.0.8,其实这里需要使用
libstdc++.so.6.0.10
分析得知:RHEL5自带的libstdc++.so.6指向的是libstdc++.so.6.0.8,版本太低。
从网上下载安装包:libstdc++-4.3.2-7.i386.rpm,更新版本。
解决办法:
1、下载RPM包:
http://kojipkgs.fedoraproject.org/packages/gcc/4.3.2/7/i386/libstdc++-4.3.2-7.i386.rpm 拷贝到虚拟机下/opt
2、提取包并将生成的libstdc++库文件考到到/usr/lib
#rpm2cpio libstdc++-4.3.2-7.i386.rpm | cpio -idv
则在当前目录下生成./usr/lib目录,包含:libstdc++.so.6.0.10 、软连接和 libstdc++.so.6
将生成的libstdc++.so.6.0.10 、软连接和 libstdc++.so.6拷贝到/usr/lib下:
#cp libstdc++* /usr/lib -a
查看:
ls -l libstdc++.so.6
显示:
/usr/lib/libstdc++.so.6 -> /usr/lib/libstdc++.so.6.0.10
3、
执行strings /usr/lib/libstdc++.so.6 | grep GLIBC
返回结果包含:GLIBCXX_3.4.9
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
GLIBC_2.0
GLIBC_2.3
GLIBC_2.4
GLIBC_2.3.4
GLIBC_2.1
GLIBC_2.1.3
GLIBC_2.2
GLIBCXX_FORCE_NEW
GLIBCXX_DEBUG_MESSAGE_LENGTH
4 这时,编译Mini2440内核正确运行。
按这个操作完毕,用arm-linux-gcc编译我的TEST.C,哈哈,成功,终于搭建好了环境,这个过程又让我这个菜鸟学习了不少东西啊