Temukan semua perpustakaan pendorong:
$ otool -L exefile
exefile:
@executable_path/libboost_something.dylib (compatibility version 0.7.0, current version 0.7.0)
/usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 65.1.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 169.3.0)
dan untuk masing-masing libboost_xxx.dylib
, lakukan:
$ install_name_tool -change @executable_path/libboost_something.dylib /opt/local/lib/libboost_something.dylib exefile
dan akhirnya verifikasi menggunakan otool
lagi:
$ otool -L exefile
exefile:
/opt/local/lib/libboost_something.dylib (compatibility version 0.7.0, current version 0.7.0)
/usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 65.1.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 169.3.0)
Halaman manual: otool
install_name_tool
EDIT Beberapa waktu yang lalu saya menulis skrip python ( copy_dylibs.py
) untuk menyelesaikan semua hal ini secara otomatis saat membuat aplikasi. Ini akan mengemas semua perpustakaan dari /usr/local
atau /opt/local
ke dalam bundel aplikasi dan memperbaiki referensi ke perpustakaan yang akan digunakan @rpath
. Ini berarti Anda dapat dengan mudah menginstal perpustakaan pihak ketiga menggunakan Homebrew dan mengemasnya dengan mudah.
Saya sekarang telah membuat skrip ini publik di github .