gpt4 book ai didi

c++ - 为什么共享库可以定位为一个用户,而不是另一个?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:03:03 25 4
gpt4 key购买 nike

我编译了一个 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

作为 otherUser 执行 ldd,我们看到了预期的结果:

~/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 找不到共享库?我需要做什么才能让 otherUser 可以执行 MyApp

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

~/MyApp/src $ echo $LD_LIBRARY_PATH

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

~/MyApp/src $

最佳答案

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

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

otherUser 应该有权访问 usrlocalTrolltechQt-4.8.5 lib

在我遇到此问题的具体情况下,otherUser 无法访问 Trolltech 目录。

关于c++ - 为什么共享库可以定位为一个用户,而不是另一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17603990/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com