【发布时间】:2013-07-11 21:39:29
【问题描述】:
我编译了一个需要以其他用户身份运行的 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
将ldd 设为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 $
【问题讨论】:
-
otherUser可以访问共享库文件吗? -
用户之间
LD_LIBRARY_PATH有区别吗? -
不
./Myapp,当从~/MyApp/src执行时,转换为~/MyApp/src/Myapp? -
@DavidBrown,是的,我做了一个
chmod -R 777 /usr/local/Trolltech/Qt-4.8.5。 -
@RobertHarvey,几乎,A 是大写的。所以应用程序存在于 ~/MyApp/src/MyApp
标签: c++ linux qt shared-libraries