dylibs へのリンクを含むコマンドライン実行可能ファイルがありますが、これは、配布されると、 によって返される指定された場所にはありませんotool -L。
たとえば、次のバイナリがあるとしfooます。
$ otool -L foo
/opt/local/lib/libgcc/libstdc++.6.dylib (compatibility version 7.0.0, current version 7.18.0)
...
私のインストーラーには、install_name_tool -changeこれを修正するために使用しようとするインストール後のスクリプトがfooあり、新しい場所の dylib にリンクします。
例えば:
$ sudo install_name_tool -change /opt/local/lib/libgcc/libstdc++.6.dylib /somewhere/else/more/sensible/libstdc++.6.dylib foo
しかし、この変更は無視され、黙って失敗します。otool -Lもう一度実行すると:
$ otool -L foo
/opt/local/lib/libgcc/libstdc++.6.dylib (compatibility version 7.0.0, current version 7.18.0)
...
何も変わっていません。
ファット バイナリをコンパイルして、-headerpad_max_install_namesコンパイル フラグを 32 ビットの Makefile に追加しようとしました。これは問題を解決しませんでしたinstall_name_tool -change。まだサイレントに失敗します。
64 ビット プラットフォームでは何もしないことを読み-headerpad_max_install_namesましたが、とにかく 64 ビットの Makefile に追加しました。予想通り、これでも問題は解決しませんでした。
リンクされたdylibのパスを最終的に変更できるように、コンパイル手順を修正するにはどうすればよいinstall_name_toolですか?