我編譯了一個需要作爲另一個用戶運行的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/src'執行時,'。/ Myapp'是否不會翻譯成'〜/ MyApp/src/Myapp'? –