在Ubuntu 18.04开发机上安装了Qt 5.14.2,当将其可执行程序拷贝到另一台未安装Qt的Ubuntu 18.04上报错:拷贝可执行程序前,使用ldd将此执行程序依赖的动态库也一起拷贝过去,包括Qt5.14.2/5.14.2/gcc_64/plugins目录系的platforms目录
在未安装Qt的Ubuntu 18.04上通过LD_LIBRARY_PATH=lib的方式执行可执行程序,lib目录包括了所有的依赖动态库:
1.执行结果如下图所示:
qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found: 与可执行文件同目录下有platforms目录,此目录下有libqxcb.so
2.将lib下的libQt5Core动态库移除后,再次执行,结果如下图所示:
虽然机子上未安装Qt,但系统本身有一些Qt库,在Ubuntu 18.04上,/usr/lib/x86_64-linux-gnu目录下存放着一些Qt 5.9.5版本的动态库
lib目录下有libQt5Core就会报"xcb"插件问题;没有此库,就会报找不到Qt 5.14的Qt5Core库
原因:执行ldd时,可执行文件所依赖的动态库并没有完全覆盖到platforms/libqxcb.so。对platforms/libqxcb.so执行ldd时,发现它还会依赖其它一些Qt库,需要将这些库全部存放到lib目录下,包括:Qt5DBus, Qt5XcbQpa, Qt5Gui, Qt5Core即可,也许还包括其它。
或者最粗暴的方式,直接将Qt5.14.2/5.14.2/gcc_64/lib目录下的所有动态库全部拷贝到另外机子的lib目录下。
GitHub:https://github.com/fengbingchun/Qt_Test