質問

私の作成プラグインの応用(dylib)に依存する複数の図書館です。これらのライブラリの設置システムが保証されないインストールする必要がありますユーザーのシステム。思うということが必要バンドルの依存関係と一緒に願います。

これらが使用できます otool リストまたは変更の経路を他のdylibs.ることができるようになるフォルダを作成したバンドルマプラグイン用に必要なすべての依存関係.

しかし、この手のように思えるので時間がかかり、ダムです。があるの費用を自動化です。

うになっているので間違っていて、ありが明らかなアプローチはこの問題なのか。

編集 を作成しました スクリプト この動ものです。

役に立ちましたか?

解決

install_name_toolを使用して、dylibに相対パスを使用してください。あなたが一度にそれらを設定し、インストール時に、あなたのライブラリを変更することなく、そのディレクトリの任意の場所にインストールすることができます。

その方法

あなたが依存する他のdylibsの相対的な位置を設定するためにinstall_name_toolを使用し、その後、一つのフォルダにあなたのdylibの依存関係のすべてを配置する必要があります。あなたのライブラリーlibmyfoo.dylibがlibbar.dylibに依存しているとします。

install_name_tool -change "/Whatever/full/path/libbar.dylib" "@loader_path/libbar.dylib" libmyfoo.dylib

この方法で、あなたのライブラリーは常にlibmyfoo.dylibが配置されている同じディレクトリにlibbar.dylibを探します。

彼らはお互いに依存している場合は、また、他のdylibsの一部にinstall_name_toolを実行する必要があるかもしれません。

用心、 install_name_toolのドキュメントのポイントアウト「大きいとき、インストール名またはrpaths仕事にこのツールのバイナリは、LD(1)で構築しなければならないオプションを-headerpad_max_install_names。」、構築時にその-headerpad_max_install_namesコマンドラインオプションを含めるようにしてくださいあなたのライブラリます。

@loader_pathは、この場合、あなたのlibmyfoo.dylibには、dylibをロードするために使用されるバイナリに相対的です。使用@executable_pathライブラリロードシーケンスを開始した実行可能ファイルへの相対的なライブラリを検索する場合。

他のヒント

る完全なクリストファーの答えは、このリンクを有用資源

Macdylibbundler の要求されたまさに行い便利な小さなツールです。 OSX用のバイナリを配布するとき、それは確かに私の命を救っています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top