加载共享库时出错:libQt5Multimedia.so.5:无法打开共享对象文件:没有这样的文件或目录

时间:2016-05-24 07:07:36

标签: c++ linux qt shared-libraries

我有一个32位的Linux虚拟盒,我正在编译我的Qt c ++代码。

我正在将目标文件复制到64位的Linux机箱(32位可执行文件仍应在此PC上运行)。

构建使用动态链接,因此我将开始复制我需要的Qt lib文件。我打算通过运行程序手动执行此操作并让它告诉我哪些lib文件丢失+我知道我需要的许多文件因此不会花很长时间(通常)。

所以在我的64位盒目标文件夹中,我有文件:

Rpe

所以我运行名为“Rpe”的可执行文件并抱怨:

./Rpe: error while loading shared libraries: libQt5Multimedia.so.5: cannot open shared object file: No such file or directory

我预计会发生这种情况,然后我将文件libQt5Multimedia.so.5从我的32位linux qt lib文件夹复制到我的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$ 

1 个答案:

答案 0 :(得分:1)

我会为你的"产品"创建一个目录。与bin子目录中的可执行文件以及lib子目录中的Qt库(以及任何其他库)。

在父目录中,我将添加一个包装脚本来设置$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" $*