日期:2014-05-16  浏览次数:20712 次

交叉编译器版本冲突问题
现在ARM下有个qt应用,用的是arm-linux-gcc4.5.1编译,这样编译出的程序,
在ARM板运行时遇到这个错误:
./nGui: /lib/libc.so.6: version `GLIBC_2.9' not found (required by /usr/local/Trolltech/QtEmbedded-4.7.0-arm/lib/libQtGui.so.4)
./nGui: /lib/libc.so.6: version `GLIBC_2.10' not found (required by /usr/local/Trolltech/QtEmbedded-4.7.0-arm/lib/libQtNetwork.so.4)
./nGui: /lib/libc.so.6: version `GLIBC_2.9' not found (required by /usr/local/Trolltech/QtEmbedded-4.7.0-arm/lib/libQtCore.so.4)

我查看/lib/libc.so.6这个库,是个软链接,开发板上是指向libc-2.5.so,但4.5.1里(PC端的交叉编译器)
里/lib/libc.so.6这个库是指向libc-2.11.1.so,我试着把libc-2.11.1.so考到开发板,重新给/lib/libc.so.6建立
链接,结果很多命令 比如shell都无法运行起来,应该是不识别libc-2.11.1.so

现在我只能用4.5.1这个交叉编译器,问下有没有什么好的办法?给提供点思路


------解决方案--------------------
用这个4.5.1的 重新做一个根文件系统
最主要是重新编译个 busybox。

另外一种方法是 单独为这个qt程序指定LD_LIBRARY_PATH,先指向你的新libc所在位置(不是替换旧libc)