我有一个32位的Linux虚拟盒,正在上面编译我的Qt c ++代码。
我将目标文件复制到64位linux盒中(32位可执行文件仍应在此PC上运行)。
该构建使用动态链接,因此我将开始跨我需要的Qt lib文件进行复制。我计划通过运行程序来手动执行此操作,并让它告诉我哪些lib文件丢失了+我知道我需要很多文件,因此通常不会花很长时间。
因此,在我的64位Box目标文件夹中,我具有以下文件:
Rpe
因此,我运行名为“ Rpe”的可执行文件,它抱怨:
./Rpe: error while loading shared libraries: libQt5Multimedia.so.5: cannot open shared object file: No such file or directory
我预计会发生这种情况,然后我将32位linux qt lib文件夹中的文件libQt5Multimedia.so.5复制到64位linux机器上的目标目录中。现在,在我的目标文件夹中有以下文件:
Rpe
libQt5Multimedia.so.5
现在,我再次运行Rpe可执行文件,我希望它会抱怨一个不同的lib文件,但是它仍在抱怨libQt5Multimedia.so.5
找不到同一文件。
我在这里做错了什么?
编辑1
LDD输出:
adadacha@duanedibbley:~/sandbox$ ldd Rpe
linux-gate.so.1 => (0xf7731000)
libQt5Multimedia.so.5 => not found
libQt5Network.so.5 => not found
libQt5Xml.so.5 => not found
libQt5Core.so.5 => not found
libstdc++.so.6 => /usr/lib/i386-linux-gnu/libstdc++.so.6 (0xf7616000)
libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0xf75f9000)
libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xf744a000)
libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xf7404000)
/lib/ld-linux.so.2 (0x5661f000)
adadacha@duanedibbley:~/sandbox$
我会为您的“产品”创建一个目录,在bin
子目录中包含可执行文件,在子目录中具有Qt库(和其他任何库)lib
。
在父目录中,我将添加一个包装器脚本来设置$LD_LIBRARY_PATH
和执行二进制文件(未测试):
#!/bin/sh
dirname="$(dirname "$0")"
exename="$(basename "$0")"
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:"$dirname/lib"
export LD_LIBRARY_PATH
exec "$dirname/bin/$exename" $*
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句