2つのオプションがあります:a)ライブラリIDを変更し、b)最終製品を変更します。
IDはdylibに埋め込まれ、dyldがどこを探すのかを定義します。 IDは、リンク時にライブラリから取得されます(他の特別なフラグが使用されていない場合)。あなたは、例えば、otool -L
でそれを確認することができます。:
gammu:~$ otool -L /usr/lib/libz.dylib
/usr/lib/libz.dylib:
/usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.5)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 159.0.0)
最初の行はdylibのIDです。 install_name_tool -id <path> <library>
を使用して変更できます。 1つのオプションは、バイナリの場所から始まる特別なフォーム@executable_path/...
を使用することです(他のものもあります)。
2番目のオプション(同じことを達成する)は、製品内のライブラリへのパスを変更することです。あなたはそれが同じotool -L
コマンドでライブラリをリンクする方法を確認することができます。
gammu:~$ otool -L /usr/bin/emacs
/usr/bin/emacs:
/usr/lib/libncurses.5.4.dylib (compatibility version 5.4.0, current version 5.4.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 159.0.0)
あなたはその後、例えば、install_name_tool -change <old> <new> <target>
でライブラリを変更することができます。
install_name_tool -change ../lib/abc.dynlib @executable_path/../lib/abc.dylib foo
最後に、Xcodeのは、通常、自動的にこのすべてをないことに注意してください(手動でコピーするのではなく)dylibを管理できるようにした場合。
私はdynlibを作成していないので、Xcodeに統合することはできません。しかし、2番目の作品です。ありがとう! – yzucker