Xcode, строительные и dylibs - PullRequest
       25

Xcode, строительные и dylibs

1 голос
/ 25 августа 2010

Я посмотрел на несколько связанных вопросов и, похоже, не могу найти решение для себя.

В основном я использую libmp3lame.dylib в своем проекте Xcode. Процесс установки для lame создал .dylib и поместил его в usr / local / lib, чтобы Xcode создал и запустил проект. Я изменил пути поиска библиотек, добавив указанную выше папку. Это отлично работает.

Теперь дело доходит до выпуска релизной версии, и я хочу включить .dylib в комплект, чтобы пользователю не пришлось мириться с фазой установки или чем-то подобным. Я создал фазу копирования файлов цели, и это сбрасывает файл .dylib в папку Frameworks в содержимом пакета. Однако запуск otool в двоичном файле показывает, что вместо использования .dylib внутри пакета компилятор связал его с версией usr / local / lib (даже если я удалю эту версию).

Глядя на другие результаты в выводе otool, у меня есть другие фреймворки, связанные внутри пакета, только не .dylib. Глядя на свойства обеих этих платформ и .dylib в XCode, я не вижу никаких отличий, кроме типа файла.

Мой поиск показывает, что мне нужно использовать rpath или аналогичный, но я понятия не имею, где применить это в Xcode.

Ответы [ 2 ]

2 голосов
/ 08 ноября 2011

Мой обходной путь для этой проблемы заключался в том, чтобы сделать следующее в терминале (я использовал Automator, чтобы, ну, в общем, автоматизировать это):

install_name_tool -id @executable_path/../Frameworks/libmp3lame.0.0.0.dylib ~/path/to/lib/in/app/libmp3lame.0.0.0.dylib

install_name_tool -change /usr/local/lib/libmp3lame.0.dylib @executable_path/../Frameworks/libmp3lame.0.0.0.dylib ~/path/to/app/Contents/MacOS/AppName

По сути, это путь к библиотеке от того, который находится в локальной библиотеке usr, к тому, который входит в комплект.

0 голосов
/ 25 августа 2010

Мой совет - посмотреть на результат сборки, как он на самом деле запускает ld?

...