最近在麒麟v10 sp1系统上,打包qt程序后,运行程序会报错undefined symbol: XFree。前提还需要设置调试qt插件环境变量,才能看到该报错。
如何设置调试qt插件环境变量?
终端输入命令:export QT_DEBUG_PLUGINS=1
原因是什么?
经过分析发现,系统中存在多个版本的libGL.so.1(文件大小不同)
输入命令:
sudo find / -name libGL.so.1
输出:
/usr/lib/aarch64-linux-gnu/csmicro/libGL.so.1
/usr/lib/aarch64-linux-gnu/libGL.so.1
/usr/lib/aarch64-linux-gnu/mwv206/libGL.so.1
/usr/lib/aarch64-linux-gnu/sietium/libGL.so.1
ldd根据动态库搜索规则查找libqt5-ukui-platformtheme.so插件库的依赖库,找到的是/usr/lib/aarch64-linux-gnu/csmicro/libGL.so.1,然而它的正确依赖库应该是/usr/lib/aarch64-linux-gnu/libGL.so.1这个库
解决办法:
1.可以设置环境变量
export LD_LIBRARY_PATH=/usr/lib/aarch64-linux-gnu:$LD_LIBRARY_PATH
2.打包时,拷贝完依赖库后,再多拷贝一次进行覆盖
cp /usr/lib/aarch64-linux-gnu/libGL.so.1 /xxx