3.19.11 Опции Darwin
Эти параметры определены для всех архитектур, работающих под операционной системой Darwin.
FSF GCC под Darwin не создаёт «жирные» объектные файлы; он создаёт объектный файл для единственной архитектуры, на которую был настроен GCC. Apple’s GCC под Darwin создаёт «жирные» файлы, если используются несколько параметров -arch; это делается путём многократного запуска компилятора или компоновщика и объединения результатов с помощью lipo.
Тип создаваемого файла (например, «ppc7400» или «ppc970» или «i686») определяется флагами, которые указывают ISA, на которую настроен GCC, например, -mcpu или -march. Можно использовать параметр -force_cpusubtype_ALL, чтобы переопределить это.
Инструменты Darwin ведут себя по-разному при возникновении несоответствия ISA. Ассемблер as допускает только инструкции, которые допустимы для типа файла, который он генерирует, поэтому вы не можете поместить 64-битные инструкции в объектный файл «ppc750». Компоновщик для динамических библиотек /usr/bin/libtool терпит неудачу и выводит сообщение об ошибке, если его попросить создать динамическую библиотеку с менее жёсткими ограничениями, чем входные файлы (например, при попытке поместить объектный файл «ppc970» в библиотеку «ppc7400»). Компоновщик для исполняемых файлов, ld, тихо присваивает исполняемому файлу самый жёсткий тип из всех его входных файлов.
-
-Fdir -
Добавить директорию фреймворка dir в начало списка директорий, которые будут проверяться на наличие заголовочных файлов. Эти директории чередуются с теми, что заданы параметрами -I, и сканируются слева направо.
Директория фреймворка — это директория, содержащая фреймворки. Фреймворк — это директория, содержащая директории Headers и/или PrivateHeaders непосредственно в себе, которая оканчивается на .framework. Имя фреймворка — это имя этой директории без .framework. Заголовки, связанные с фреймворком, находятся в одной из этих двух директорий, причём директория Headers проверяется первой. Подфреймворк — это директория фреймворка, находящаяся в директории Frameworks фреймворка. Включение заголовков подфреймворка может происходить только в заголовке фреймворка, содержащего подфреймворк, или в заголовке подфреймворка-близнеца. Два подфреймворка считаются близнецами, если они находятся в одном фреймворке. Подфреймворк не должен иметь такое же имя, как фреймворк; в противном случае выдаётся предупреждение. В настоящее время подфреймворки не могут содержать другие подфреймворки; в будущем этот механизм может быть расширен для поддержки этой возможности. Стандартные фреймворки находятся в /System/Library/Frameworks и /Library/Frameworks. Пример включения выглядит так
#include <Framework/header.h>, где Framework обозначает имя фреймворка, а header.h находится в директории PrivateHeaders или Headers. -
-iframeworkdir -
Подобно -F, за исключением того, что директория обрабатывается как системная директория. Основное различие между -iframework и -F заключается в том, что компилятор не выдаёт предупреждений о конструкциях, содержащихся в заголовочных файлах, найденных через dir. Этот параметр действителен только для языков семейства C.
-
-gused -
Выводить отладочную информацию для используемых символов. Для отладочного формата stabs это активирует -feliminate-unused-debug-symbols. По умолчанию ВКЛЮЧЕНО.
-
-gfull -
Выводить отладочную информацию для всех символов и типов.
-
-fconstant-cfstrings -
-fconstant-cfstrings — это псевдоним для -mconstant-cfstrings.
-
-mconstant-cfstrings -
При использовании среды выполнения NeXT (по умолчанию на этих системах) переопределить любое значение -fconstant-string-class и расположить литералы
@"…"как постоянные строки CoreFoundation. -
-mmacosx-version-min=version -
Самая ранняя версия MacOS X, на которой будет выполняться этот исполняемый файл, — это version. Типичные поддерживаемые значения для version включают
12,10.12, и10.5.8.Если компилятор по умолчанию был настроен на использование системных заголовков, то значение по умолчанию для этого параметра — это системная версия, на которой работает компилятор; в противном случае по умолчанию выбираются варианты, совместимые с максимальным количеством систем и кодовых баз.
-
-mkernel -
Включить режим разработки ядра. Параметр -mkernel устанавливает -static, -fno-common, -fno-use-cxa-atexit, -fno-exceptions, -fno-non-call-exceptions, -fapple-kext, -fno-weak и -fno-rtti там, где это применимо. Этот режим также устанавливает -mno-altivec, -msoft-float, -fno-builtin и -mlong-branch для целей PowerPC.
-
-mone-byte-bool -
Переопределить значения по умолчанию для
boolтаким образом, чтобыsizeof(bool)==1. По умолчаниюsizeof(bool)равно4при компиляции для Darwin/PowerPC и1при компиляции для Darwin/x86, поэтому этот параметр не влияет на x86.Предупреждение: Переключатель -mone-byte-bool заставляет GCC генерировать код, несовместимый с кодом, сгенерированным без этого переключателя. Использование этого переключателя может потребовать перекомпиляции всех остальных модулей программы, включая системные библиотеки. Используйте этот переключатель для соответствия нестандартной модели данных.
-
-mfix-and-continue -ffix-and-continue-findirect-data-
Генерировать код, подходящий для быстрой разработки, например, чтобы разрешить GDB динамически загружать файлы .o в уже запущенные программы. -findirect-data и -ffix-and-continue предоставлены для обратной совместимости.
-
-all_load -
Загружает всех членов статических архивированных библиотек. Смотрите man ld(1) для получения дополнительной информации.
-
-arch_errors_fatal -
Приводить к фатальным ошибкам связанные с файлами, у которых неправильная архитектура.
-
-bind_at_load -
Помечает выходной файл таким образом, что динамический компоновщик свяжет все не определённые ссылки при загрузке или запуске файла.
-
-bundle -
Создать файл в формате Mach-o bundle. Смотрите man ld(1) для получения дополнительной информации.
-
-bundle_loader executable -
Этот параметр указывает исполняемый файл executable, который загрузит выходной файл сборки, который сейчас компонуется. Смотрите man ld(1) для получения дополнительной информации.
-
-dynamiclib -
При передаче этого параметра GCC создаёт динамическую библиотеку вместо исполняемого файла при компоновке, используя команду Darwin libtool.
-
-force_cpusubtype_ALL -
Это заставляет выходной файл GCC иметь тип ‘ALL’ вместо типа, контролируемого параметрами -mcpu или -march.
-allowable_client client_name-client_name-compatibility_version-current_version-dead_strip-dependency-file-dylib_file-dylinker_install_name-dynamic-exported_symbols_list-filelist-flat_namespace-force_flat_namespace-headerpad_max_install_names-image_base-init-install_name-keep_private_externs-multi_module-multiply_defined-multiply_defined_unused-noall_load-no_dead_strip_inits_and_terms-nofixprebinding-nomultidefs-noprebind-noseglinkedit-pagezero_size-prebind-prebind_all_twolevel_modules-private_bundle-read_only_relocs-sectalign-sectobjectsymbols-whyload-seg1addr-sectcreate-sectobjectsymbols-sectorder-segaddr-segs_read_only_addr-segs_read_write_addr-seg_addr_table-seg_addr_table_filename-seglinkedit-segprot-segs_read_only_addr-segs_read_write_addr-single_module-static-sub_library-sub_umbrella-twolevel_namespace-umbrella-undefined-unexported_symbols_list-weak_reference_mismatches-whatsloadedЭти параметры передаются компоновщику Darwin. Подробное описание их можно найти в руководстве компоновщика Darwin.
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-13.3.0/gcc/Darwin-Options.html