问题描述:
最近,在开发板上部署好QT5的开发环境,准备运行应用程序时报了这么一个错误:
/lib/libc.so.6: version ‘GLIBC 2.9’ not found (required by /opt/qt5.7.0/lib/libQt5Core.so.5)
原因分析:
根据报错出来的提示,可以很容易得知这是GLIBC版本的支持问题。这里我们先查看libQt5Core.so.5库所需要的GLIBC库版本
strings libQt5Core.so.5 | grep GLIBC
以下是我编译好的qt库所需要支持的glibc库版本:
接着查看libc.so.6所支持的GLIBC版本
strings libc.so.6 | grep GLIBC
这里可以看到并没有libQt5Core.so.5所需要支持的GLIBC_2.9版本
解决方案:
问题已经定位了,就需要想办法解决了。最开始,想到的解决方法是交叉编译对应版本的glibc库并更新到开发板上去,但是在实际操作的过程中发现编译glibc库并不是那么容易的事,过程中总是会遇到各种工具的依赖,更麻烦的是一些版本问题,最后也不了了之。后面发现其实不用再另外去编译glibc库,直接将编译QT库时所用到的交叉编译器的库文件全部拷贝到开发板上就可以了,因为编译QT库时所依赖的库文件都可以在交叉编译器的库文件中找到,所以直接将之拷贝过来用一劳永逸。
cp /usr/local/arm/arm-2014.05/arm-none-linux-gnueabi/libc/lib/* ./
重新生成system.img镜像文件,拷贝到开发板上。重新运行应用程序,程序正常运行,没有再遇到上述报错。