2013-07-11 53 views
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 

做一個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 $ 
+0

'otherUser'可以訪問共享庫文件嗎? –

+0

用戶之間是否有不同的LD_LIBRARY_PATH? –

+0

從'〜/ MyApp/src'執行時,'。/ Myapp'是否不會翻譯成'〜/ MyApp/src/Myapp'? –

回答

2

通向共享庫的整個目錄路徑必須可由otherUser訪問。檢查所有文件夾的路徑:

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

otherUser應該有usrlocalTrolltechQt-4.8.5lib訪問。

在我的具體情況下,當我遇到這個問題時,Trolltech目錄無法訪問otherUser

-1

檢查LD_LIBRARY_PATH環境變量。

echo $LD_LIBRARY_PATH 

您可能會發現用戶的路徑與其他用戶的路徑不同。您可能需要爲無法找到該庫的用戶設置(或更新)此變量。

相關問題