7

同じ問題に関連する 2 つの問題があります。

  1. `pwd`/lib に保存された共有オブジェクトがあり、それを使用する実行可能ファイルは (-l および -L スイッチを使用して) 正常にコンパイルされますが、実行時に悲しみを覚えます。実行しようとすると、正常に動作LD_LIBRARY_PATH=/my/absolute/path/to/library/directory ./testします。しかし、LD_LIBRARY_PATH=/my/absolute/path/to/library/directory をエクスポートして実行./testすると、共有ライブラリが見つからないと表示されます。しかし、もう一度やるとうまくいきますLD_LIBRARY_PATH=$LD_LIBRARY_PATH ./test!! 私が間違っていることについてのアイデアはありますか?

  2. 2 番目の問題は、LD_LIBRARY_PATH 環境変数のエクスポートに関連しています。ターミナルを開いて入力export LD_LIBRARY_PATH=/path/to/stuffしてから入力echo $LD_LIBRARY_PATHすると、変数は正しいです。ただし、export コマンドを含むスクリプトを作成した場合、単純に実行するだけでは変数は更新されません。代わりに、source install.sh実際に変数を永続化するために実行する必要があります。これに対する最善の解決策は何ですか?

お時間をいただきありがとうございます!

4

2 に答える 2

5

最初に2 番目の質問に答えるには:

source現在のシェル内でスクリプトを./install.sh実行し、別のシェルでスクリプトを開いて実行します。 http://www.unix.com/unix-dummies-questions-answers/537-difference-between-source-exec-script.html

最初の質問は次のとおりです。

LD_LIBRARY_PATH=$LD_LIBRARY_PATH ./testLD_LIBRARY_PATH 変数を 1 つのコマンド (./testコマンド) の前に設定します。上記と同じ理由で、これはシェル./testが作成するものに転送されていないと思います。永続化するにはexport LD_LIBRARY_PATH=...~/.bashrc

于 2013-03-31T12:57:41.403 に答える