主题 : 交叉编译错的同学的福音,福利贴哦 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 66169
精华: 0
发帖: 17
金钱: 90 两
威望: 18 点
贡献值: 0 点
综合积分: 34 分
注册时间: 2012-03-27
最后登录: 2012-04-10
楼主  发表于: 2012-03-31 10:37

 交叉编译错的同学的福音,福利贴哦

继续,继内核升级完毕后,还是发现交叉编译出错,编译器版本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,哈哈,成功,终于搭建好了环境,这个过程又让我这个菜鸟学习了不少东西啊