Опция -fembed-bitcode исчезает при связывании разделяемой библиотеки - PullRequest
0 голосов
/ 01 мая 2018

Я пытаюсь скомпилировать несколько библиотек с открытым исходным кодом для iOS как разделяемые библиотеки с битовым кодом. Я добавил флаг -fembed-bitcode в CFLAGS и LDFLAGS. Компиляция завершается нормально, но в некоторых из полученных библиотек (например, curl) нет битового кода (я проверил это с помощью otool -l lib.dylib | grep LLVM).

Мое расследование показывает, что флаг -fembed-bitcode просто исчезает из командной строки компоновщика, когда dylib выполняет компоновку, хотя в Makefile в этом месте используется LDFLAGS напрямую. Как -fembed-bitcode может исчезнуть из LDFLAGS?

1 Ответ

0 голосов
/ 01 мая 2018

Причиной исчезновения флага -fembed-bitcode является то, что библиотека использует libtool для компоновки и удаляет неизвестные флаги по умолчанию:

При создании общей библиотеки, но не при компиляции или создании Программа libtool удаляет некоторые флаги из командной строки, предоставленной Пользователь. Это сделано потому, что флаги, неизвестные libtool, могут мешать с созданием библиотеки или требует дополнительной поддержки от libtool, и потому что пропуск флагов обычно является консервативным выбором для успешная сборка.

Если вы столкнулись с флагами, которые, по вашему мнению, полезно передать, как В качестве обходного пути вы можете добавить флаги с -Wc или -Xcompiler, чтобы они должны быть переданы в драйвер компилятора (см. режим Link). Другая возможность - добавить флаги уже в команду компилятора в настроить время выполнения:

. / Configure CC = 'gcc -m64'

Так что я просто добавил флаг -Wc,-fembed-bitcode в LDFLAGS в дополнение к -fembed-bitcode и библиотека компилируется с битовым кодом.

...