1

我已经编译了一个需要以另一个用户身份运行的 Qt 应用程序。但是,当它以该用户身份运行时,它无法加载 Qt 共享库:

~/MyApp/src $ sudo -u otherUser ./MyApp
./MyApp: error while loading shared libraries: libQtGui.so.4: cannot open shared object file: No such file or directory

lddas otherUser,我们看到了预期的:

~/MyApp/src $ sudo -u otherUser ldd ./MyApp
libQtGui.so.4 => not found

但是,当我ldd自己做时,我可以找到libQtGui.so.4共享库就好了。

~/MyApp/src $ ldd ./MyApp
libQtGui.so.4 => /usr/local/Trolltech/Qt-4.8.5/lib/libQtGui.so.4 (0x00002b97a4e1a000)
libQtNetwork.so.4 => /usr/local/Trolltech/Qt-4.8.5/lib/libQtNetwork.so.4 (0x00002b97a5bf1000)

为什么otherUser找不到共享库?我需要做什么才能使其MyApp可执行otherUser

对于两个用户,我的 LD_LIBRARY_PATH 似乎都是空的:

~/MyApp/src $ echo $LD_LIBRARY_PATH

~/MyApp/src $ sudo -u otherUser echo $LD_LIBRARY_PATH

~/MyApp/src $
4

2 回答 2

2

通向共享库的整个目录路径必须可由otherUser. 检查路径中的所有文件夹:

/usr/local/Trolltech/Qt-4.8.5/lib/

otherUser应该有权访问usr, local, Trolltech,Qt-4.8.5lib.

在我遇到此问题的特定情况下,该Trolltech目录无法访问otherUser

于 2013-07-11T22:06:34.253 回答
-1

检查您的 LD_LIBRARY_PATH 环境变量。

echo $LD_LIBRARY_PATH

您可能会发现您的用户与其他用户的路径不同。您可能需要为找不到库的用户设置(或更新)此变量。

于 2013-07-11T21:42:12.817 回答