Encuentra todas las bibliotecas de impulso:
$ 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)
y para cada uno libboost_xxx.dylib
, hacer:
$ install_name_tool -change @executable_path/libboost_something.dylib /opt/local/lib/libboost_something.dylib exefile
y finalmente verifique usando otool
nuevamente:
$ 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)
Páginas de manual: otool
install_name_tool
EDITAR Hace un tiempo escribí un script de python ( copy_dylibs.py
) para resolver todo esto automáticamente al crear una aplicación. Empaquetará todas las bibliotecas desde /usr/local
o /opt/local
dentro del paquete de aplicaciones y corregirá las referencias a esas bibliotecas para usar @rpath
. Esto significa que puede instalar fácilmente una biblioteca de terceros utilizando Homebrew y empaquetarlas con la misma facilidad.
Ahora he hecho público este script en github .