Makefile make install は複数行コマンドを実行しません。

Makefile make install は複数行コマンドを実行しません。

ソースコードをビルドした後にアクションを実行できるinstallセクションを含むMakefileがあります。make installこのinstallセクションには、2行のシェルコマンドが含まれています。

install: /usr/local/lib
    cp $(LIB_OBJ) $<
    export LD_LIBRARY_PATH=$< 

したがって、最初の行はlibxxx.soをコピーし、2行目は最終実行可能ファイルがlibxxx.soファイルを見つけることができるように環境/usr/local/lib変数を設定します。LD_LIBRARY_PATH/usr/local/lib

ただし、make installコマンドラインから実行した場合は、次のように入力します。

echo $LD_LIBRARY_PATH

予想されるコンテンツの代わりに空のコンテンツが表示されます/usr/local/lib。それでは、Makefileの2番目のコマンドラインはなぜ実行されないのですか?

ベストアンサー1

makeほぼ確実に2行のコマンドが実行されています。ただし、その行export LD_LIBRARY_PATH=$<(またはmakeそれを拡張するすべての項目)は、このプロセスの子としてシェルによって実行されますmake。と入力すると、echo $LD_LIBRARY_PATH環境変数LD_LIBRARY_PATHのすべての内容が取得されます。シェルは、「エクスポート」を実行せずにこれを実行するサブプロセスですmake。ファイルまたは別のファイルにエクスポートするか、手動で入力する必要があり.bashrcます.zshrc

おすすめ記事