我构建了一个Qt应用程序,并包含了构建目录中所需的必要库。当我尝试从另一台计算机运行该应用程序时,它无法正常工作。
这是ldd
输出:
linux-vdso.so.1 => (0x00007fff8c7fe000)
libQt5Widgets.so.5 => not found
libQt5Gui.so.5 => not found
libQt5Core.so.5 => not found
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f5cb4143000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f5cb3f2d000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f5cb3b6c000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f5cb3870000)
/lib64/ld-linux-x86-64.so.2 (0x00007f5cb4456000)
找不到的文件与二进制文件位于同一目录中。如何使它们可检测到?
答案 0 :(得分:2)
在Linux上,当前二进制目录不是加载程序查找共享库的位置。请参阅此问题:https://serverfault.com/questions/279068/cant-find-so-in-the-same-directory-as-the-executable
答案 1 :(得分:1)
您可以将以下内容添加到.pro文件中,以强制动态链接器在运行时在Linux中查找与Qt应用程序相同的目录:
unix:{
# suppress the default RPATH if you wish
QMAKE_LFLAGS_RPATH=
# add your own with quoting gyrations to make sure $ORIGIN gets to the command line unexpanded
QMAKE_LFLAGS += "-Wl,-rpath,\'\$$ORIGIN\'"
}