Параметр -fembed-bitcode исчезает при связывании разделяемой библиотеки

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

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

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
0
539
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

When creating a shared library, but not when compiling or creating a program, libtool drops some flags from the command line provided by the user. This is done because flags unknown to libtool may interfere with library creation or require additional support from libtool, and because omitting flags is usually the conservative choice for a successful build.

If you encounter flags that you think are useful to pass, as a work-around you can prepend flags with -Wc, or -Xcompiler to allow them to be passed through to the compiler driver (see Link mode). Another possibility is to add flags already to the compiler command at configure run time:

./configure CC='gcc -m64'

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

Другие вопросы по теме