加载共享库时出错:libQt5Multimedia.so.5:无法打开共享对象文件:没有这样的文件或目录
Posted
技术标签:
【中文标题】加载共享库时出错:libQt5Multimedia.so.5:无法打开共享对象文件:没有这样的文件或目录【英文标题】:error while loading shared libraries: libQt5Multimedia.so.5: cannot open shared object file: No such file or directory 【发布时间】:2016-05-24 07:07:35 【问题描述】:我有一个 32 位的 linux Virtual Box,我在上面编译我的 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
文件。
我在这里做错了什么?
EDIT-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$
【问题讨论】:
ldd <exename>
说这个库应该从哪里加载?
@***foe 好点,将此添加到我的问题中:)
好的,看来您需要将库添加到 /usr/local/lib
或某个地方?
@***foe 是的......我可以把它们放在那里(还没有尝试过),但我认为如果你把它们放在同一个文件夹中它应该把它们捡起来?
你可以这样做,但是你需要在执行二进制文件之前设置$LD_LIBRARY_PATH
,所以这需要一个包装脚本。如果这是您交付给客户的“产品”,这是可行的,因为它完全独立在一个目录结构中。对于不是“产品”的东西,我建议安装到/usr/local
。
【参考方案1】:
我将为您的“产品”创建一个目录,其中的可执行文件位于 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" $*
【讨论】:
以上是关于加载共享库时出错:libQt5Multimedia.so.5:无法打开共享对象文件:没有这样的文件或目录的主要内容,如果未能解决你的问题,请参考以下文章
加载共享库时出错,无法打开共享对象文件:没有这样的文件或目录(hiredis)
加载共享库时出错:libgmock.so:无法打开共享对象文件:没有这样的文件或目录
/usr/share/code/bin/../code:加载共享库时出错:libX11-xcb.so.1:无法打开共享对象文件: