Невозможно изменить @rpath на OSX

У меня есть внешняя библиотека "libspecial.dylib" со следующими зависимостями.

otool -L libspecial.dylib                                                                                                                          [11:20:59]
libspecial.dylib:
     @rpath/libspecial.dylib (compatibility version 1.0.0, current version 1.0.1)
     @rpath/libhelper.dylib  (compatibility version 1.0.0, current version 1.0.1)

Поскольку @rpath вызывает проблемы, у меня есть скрипт, заменяющий все @rpath реальным путем.

install_name_tool -change @rpath/libspecial.dylib /tmp/libspecial.dylib libspecial.dylib
install_name_tool -change @rpath/libhelper.dylib  /tmp/libhelper.dylib  libspecial.dylib

Но это только заменяет вторую зависимость (на самом деле есть больше зависимостей, все заменяются, но не первая, которая указывает на саму библиотеку):

otool -L libspecial.dylib
libspecial.dylib:
     @rpath/libspecial.dylib (compatibility version 1.0.0, current version 1.0.1)
     /tmp/libhelper.dylib    (compatibility version 1.0.0, current version 1.0.1)

Я понятия не имею, почему я не могу изменить первую зависимость. Есть идеи?

Работает на OSX 10.11.1

1 ответ

Решение

Хорошо, я понял, что первая "зависимость" не является зависимостью как таковой, это скорее имя библиотеки. Я также вижу это при использовании

otool -D libspecial.dylib
    @rpath/libspecial.dylib

Так что команда была просто неправильной. Это можно исправить с помощью

install_name_tool -id libspecial.dylib libspecial.dylib
Другие вопросы по тегам