查找所有增强库:
$ 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)
并为每个libboost_xxx.dylib
做:
$ install_name_tool -change @executable_path/libboost_something.dylib /opt/local/lib/libboost_something.dylib exefile
最后otool
再次验证使用:
$ 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)
手册页: otool
install_name_tool
编辑不久前,我编写了一个python脚本(copy_dylibs.py
),以在构建应用程序时自动解决所有这些问题。它将打包来自/usr/local
或/opt/local
捆绑到应用程序捆绑包中的所有库,并修复对这些库的引用以供使用@rpath
。这意味着您可以使用Homebrew轻松安装第三方库并打包它们。
我现在已将此脚本在github上公开。