2016-09-01 6 views
1

を輸出含まれていませんLD_LIBRARY_PATHは、下記の方法で、メイクファイルを介しての.soのパスをエクスポートしようとしたパス

データ-AMインストール:

export LD_LIBRARY_PATH=$$LD_LIBRARY_PATH:'$(PWD)' 
    echo $$LD_LIBRARY_PATH 

をしかしエコー$をすればLD_LIBRARY_PATHそれでも空白です。これで助けてください、事前にありがとう

+0

二重 '$ '記号は何ですか? – redneb

+1

[ターゲットを作る間にENV変数を渡すにはどうすればいいですか?](0120-18753-03) – user657267

+0

しかしそれでも空白です。 「ターゲットを作る間にENV変数を渡すにはどうすればよいですか」と同じ方法を従います。 –

答えて

3

Makefileの各ターゲットステートメントは、サブシェルで実行される独立したステートメントです。実行後、makeは新しいサブシェルを開始して次のステートメントを実行します。

export LD_LIBRARY_PATH=$$LD_LIBRARY_PATH:'$(PWD)' 

makeこのコマンドを実行する子プロセスを開始します。このコマンドは実行を終了し、makeは次のコマンドで再開します。

echo $$LD_LIBRARY_PATH 

makeこのコマンドを実行するために子プロセスを開始します。前のコマンドはすでに実行を終了しました。前のコマンドはその環境にLD_LIBRARY_PATHを設定しましたが、それは古代の歴史です。その子プロセスとその環境は、空にある大きなビットのバケツに行きました。この新しいプロセスはそれについて何も知らない。

あなたは1文として、すべてを実行する必要があり、1つのシェルミニスクリプト:

export LD_LIBRARY_PATH=$$LD_LIBRARY_PATH:'$(PWD)'; echo $$LD_LIBRARY_PATH 

makeことにより、単一の子プロセスとして実行されるように、非常に長いシェルミニスクリプトを書いて、長い行をすることができ

export LD_LIBRARY_PATH=$$LD_LIBRARY_PATH:'$(PWD)'; \ 
    echo $$LD_LIBRARY_PATH 
+0

ありがとう –

関連する問題