El Capitan、確認してください、DYLD_LIBRARY_PATH
私は通常のUnixツールセットを使用してアプリケーションを開発makeします。コンパイラ、、および共有ライブラリです。手順は伝統的に次のようなものです ./configureを実行するマシンの機能のソースを調整します。 make、実際には共有ライブラリ、実行可能ファイルなどをコンパイルします。 make check、パッケージをインストールする前にテストを実行し、 make install、パッケージが適切に動作する場合、最後にオプションで、 make installcheck、インストールが機能することを確認します。 の間make、共有ライブラリと実行可能ファイルは、最終的な形式でコンパイルされます。実行可能ファイルは、最終的な宛先で共有ライブラリへの依存関係でコンパイルされます(つまり、ライブラリには依存し/usr/local/libていませんが、まだビルドされています。木)。次にmake install、大まかにcp言って、ビルドツリーから最終的な場所にlibsと実行可能ファイルをインストールするためだけに使用します。 このmake checkフェーズでは、アンインストールされたプログラムを実行しています。共有ライブラリ、実行可能ファイル、補助ファイルは、ビルドツリーに残っています。テストを実行するには、いくつかのカスタム環境変数(たとえば、補助データファイルが/usr/local/shareソースツリーではなくソースツリーにあることをプログラムに通知する)といくつかのシステム環境変数を設定して、共有ライブラリローダーに表示するように通知する必要があります。共有ライブラリ用。従来のUnicesの環境変数はLD_LIBRARY_PATHOS XではそれですDYLD_LIBRARY_PATH。これは(何十年も)働いてきました。 しかし今、エルキャピタンはこれを破った。 $ (export FOO=foo; env) | grep foo FOO=foo $ (export DYLDFOO=foo; env) | grep foo DYLDFOO=foo $ (export DYLD_FOO=foo; env) | grep foo $ 現在、SIPが有効になっている場合DYLD_*、プロセスからその子には何もエクスポートされません。 だから私の質問です:インストールされていないプログラムをどのように実行できますか?従来のUnixシーケンスを実行できるようにするための手順は何./configure && make && make checkですか? してください、何の答えは次のような「実行しないmake install第一」。それはポイントではありません。私は開発者であり、「make check」の実行(より一般的には、インストールされていないバージョンのプログラムの実行)は非常に頻繁に行います。ダミーの場所に設置するだけでも時間がかかります。私は何か効果的な、必要と効率的。また、SIPを無効にしても、実行したい私のパッケージのユーザーの問題は修正されませんmake check。