Я создаю несколько утилит командной строки в Xcode (plain C, no Cocoa). Я хочу, чтобы все они использовали мою настроенную версию libpng, и я хочу сэкономить место, разделив одну копию библиотеки среди всех исполняемых файлов (я не против перераспределения .dylib
с ними).
Нужно ли мне делать магию, чтобы получить символы экспорта libpng?
Создает ли ссылка Link Binary With Libraries статическую фазу?
Apple docs упоминает загрузку библиотек во время выполнения с помощью dlopen
, но как я могу заставить Xcode создавать исполняемые файлы без жалоб на недостающие символы?
Думаю, я понял:
-
libpng не связывался правильно, потому что я создал 32/64-разрядные исполняемые файлы и 32-битную библиотеку. Параметры сборки библиотеки и исполняемых файлов должны соответствовать.
-
libpng config.h нуждается в тоннах таких как
#define FEATURE_XXX_SUPPORTED
-
"Строка компоновки бинарных ссылок с библиотеками" отлично обрабатывает динамические библиотеки, а переменная окружения
DYLD_FALLBACK_LIBRARY_PATH
необходима для загрузки.dylib
из пакета приложений.