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あります。TrolltechQt-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 に答える