2017-01-09 9 views
0

私たちはいくつかのdylibと動的にリンクするプロジェクトを持っています。ビルドを別のMacにコピーするとき。 "インストール"中に共有ライブラリパスを修正するために、dylibと実行可能ファイルに対して "otool"を実行する必要があります。dylibからdylibへのパスはmac osxで、rpathはMacで動作させる方法は?

OSXにはDLLパスからDLLパスへの奇妙な要件があり、相対パスが機能しない(rpathを使用している)ように見えます。私の質問はここにあります:

  1. Macでソフトウェアを出荷する通常の方法は何ですか? .pkgまたは.dmgインストーラを実行している場合、インストールされたdylibが相対パスで相互にリンクできることを確認する方法はありますか? dylibパスはrpathまたはいくつかのインストール後スクリプトで修正する必要があります

  2. これを修正するためにインストール後スクリプトを実行できない場合は、他のオプションはありますか?

答えて

0

相対パスは正常に動作するはずです。たとえば、macOSアプリケーションバンドルを想定します。図書館はContents/Frameworksにありますが、申請はContents/MacOSにあります。この場合、アプリケーションのライブラリを@executable_path/../Frameworks/library.soのようなものに再リンクします。アプリケーションバンドルを使用せず、同じディレクトリ内のすべてのファイルを簡単に使用する場合は、@executable_pathを使用しても簡単に動作します。

これらの例では@rpathを使用する必要はありません。これも使用できますが、アプリケーションでこのパスを定義する必要があります。これは、図書館を配布し、人々があなたの図書館にリンクしていると思われる場合に役立ちます。そうすれば、彼らはアプリケーションに@rpathを与えて、otoolを使わないでライブラリを見つけることができます。

もちろん、アプリケーションのパッケージを.dmgまたは.pkgに変更する前にこれらの変更を加えてください。

関連する問題