Mac OS Xでは、DYLD形式のバイナリ実行可能ファイルには、ライブラリのロードシステムにファイルの内容の処理方法を指示する「ローダコマンド」が含まれています。特に、loaderコマンドは、依存するライブラリを検索するシステムに指示します。ldが明示的にサポートしていないDYLDローダーコマンドをインストールするにはどうすればよいですか?
"otool -l/path/to/your"を実行すると、システム上のバイナリのローダコマンドの完全なリストが表示されます/ app "
一般に、これらのローダーコマンドは、プロジェクトのコンパイルのリンクフェーズで "ld"ツールによって設定されます。
私の質問は、(明らかに)ldでサポートされていない宣言された型のローダコマンドを追加するために何をする必要がありますか?
特に、私はLC_DYLD_ENVIRONMENTローダーcommmandを利用したいと思います。これはローダーコマンドテーブルの文字列を環境変数設定として読み込んで評価するバイナリを指定するのに使用できます実行可能ファイル。
これを容易にするldの引数はありません。 "-sectcreate"のようなものが、ローダーコマンドの内容に特に追加するものは、私が後にしているものです。
Mac OS Xの標準アプリケーションの少なくとも1つがSafariを使用しているため、これが可能です。しかし、私はバイナリのポストリンクマッサージによってこれを達成するかどうか、カスタムローダーコマンドをビルドしてチェーンする方法を知っているカスタムバージョンのldを使用しているのか、あるいはそれらが悪用されているのかどうかはわかりません私が把握できなかったldコマンドの一般的な機能です。
素晴らしい!ありがとう。また、LC_DYLD_ENVIRONMENTは実際にはDYLDの読み込みに影響を与えるものだけを任意の環境変数に定義させるわけではないことに注意してくれたTwitter経由のフィードバックもあります。その程度まで、以下のNedからのLSE環境の勧告は、私の直ちに必要なものに適していますが、あなたの答えは質問の要点にとって最も適切な参考資料です。 – danielpunkass