Набор инструментов Linaro GCC
В ОС Аврора можно использовать набор инструментов GCC и GNU: Linaro GCC, GNU ld linker и GNU libc, которые запускаются в среде сборки.
Linaro Toolchain работает по всем аспектам инструментов системного уровня:
основной инструментарий разработки (компилятор, ассемблер, компоновщик, отладчик),
основные системные библиотеки (динамический компоновщик, библиотека C), эмуляция,
профилирование и анализ (oprofile, события производительности) и инструментарий ftrace.
Также предоставляются бинарные выпуски Linaro Toolchain и выпуски пакетов Linaro Toolchain.
Проверка версий инструментария Linaro GCC
Аврора SDK может включать несколько целей SDK.
Любая конкретная цель SDK используется для выполнения сборок для конкретной архитектуры.
Комплекты armv7hl и aarch64 используются для мобильных устройств, i486 и x86_64 — для эмулятора.
Можно проверить, какие версии инструментов сборки установлены для данной архитектуры,
узнав версии пакетов cross-[arch]-gcc и cross-[arch]-binutils.
Например:
-
Войти в среду сборки:
~/AuroraOS/bin/sfdk engine execКоманда приводится для Unix-совместимого терминала. В Linux и macOS можно использовать стандартный терминал, в Windows необходимо использовать Git Bash.
-
Проверить версию установленного пакета
cross-armv7hl-gcc:sudo zypper refresh zypper info cross-armv7hl-gcc
Именно эта версия GCC будет доступна для ScratchBox2 в режиме sdk-build в цели armv7hl.
Например:
-
Войти в среду сборки:
~/AuroraOS/bin/sfdk engine exec -
Войти в цель SB2 в режиме
sdk-build, предполагая, что цель уже существует:sb2 -R -t AuroraOS-<номер_релиза>-base-<архитектура> -m sdk-buildПример:
sb2 -R -t AuroraOS-4.0.2.249-base-armv7hl -m sdk-build -
Проверить, какая версия GCC используется при сборке для этой цели:
gcc -v
Команда gcc
Синопсис команды gcc:
gcc [-c|-S|-E] [-std=standard]
[-g] [-pg] [-Olevel]
[-Wwarn...] [-Wpedantic]
[-Idir...] [-Ldir...]
[-Dmacro[=defn]...] [-Umacro]
[-foption...] [-mmachine-option...]
[-o outfile] [@file] infile...
Когда вызывается инструмент GCC, он обычно выполняет предварительную обработку,
компиляцию, сборку и компоновку.
Общие параметры позволяют остановить этот процесс на промежуточном этапе.
Например, опция -c указывает не запускать компоновщик.
Вывод состоит из объектных файлов, выводимых ассемблером.
Обычный способ запустить GCC — запустить исполняемый файл gcc,
или machine-gcc при кросс-компиляции, или machine-gcc-version,
чтобы запустить определённую версию GCC.
Когда компилируются программы на C++, вместо этого следует вызывать GCC
через исполняемый файл g++.
Программа gcc принимает опции и имена файлов в качестве операндов.
Многие опции имеют многобуквенные имена;
поэтому несколько однобуквенных опций не могут быть сгруппированы.
Можно смешивать опции и другие аргументы.
По большей части порядок, который используется, не имеет значения.
Он имеет значение, когда используется несколько вариантов одной функциональности;
например, если указать -L более одного раза, каталоги будут просмотрены в указанном порядке.
Кроме того, размещение опции -l является значимым.
Некоторые параметры принимают один или несколько аргументов, обычно разделяемых либо пробелом,
либо знаком равенства (=) от имени параметра.
Если не указано иное, аргумент может быть числовым или строковым.
Числовые аргументы должны быть маленькими десятичными или шестнадцатеричными целыми без знака.
Шестнадцатеричные аргументы должны начинаться с префикса 0x.
Опции команды gcc
Некоторые полезные и часто используемые опции gcc:
-c— компилировать или собирать исходные файлы, но не линковать. Этап линковки будет не завершен. Окончательный результат будет в форме объектного файла для каждого исходного файла. По умолчанию имя объектного файла для исходного файла создается путем замены суффикса .c, .i, .s и т. д. на .o.-S— остановиться после этапа компиляции; не собирать. Выходные данные представлены в виде файла кода ассемблера для каждого указанного входного файла не на ассемблере. По умолчанию имя файла ассемблера для исходного файла создается путем замены суффикса .c, .i и т. д. на .s.-E— остановиться после этапа предварительной обработки; не запускает компилятор должным образом. Выходные данные представлены в виде предварительно обработанного исходного кода, который отправляется на стандартный вывод.-o file— поместить вывод в файл. Это относится к любому виду вывода независимо от того, исполняемый файл или объектный файл, файл ассемблера или предварительно обработанный код C.-g— создать отладочную информацию в собственном формате операционной системы (stabs, COFF, XCOFF или DWARF). GDB может работать с этой отладочной информацией.-p,-pg— сгенерировать дополнительный код для записи информации профиля, подходящей для программы анализаprof(для-p) илиgprof(для-pg). Нужно использовать эту опцию при компиляции исходных файлов, о которых требуется получить данные, и также необходимо использовать их при компоновке.-O— оптимизировать. Оптимизация компиляции занимает несколько больше времени и намного больше памяти для большой функции. Для более подробного изучения параметров оптимизации можно обратиться к руководству gcc.-w— блокировать все предупреждающие сообщения.-I dir— добавить каталогdirв список каталогов для поиска файлов заголовков во время предварительной обработки. Еслиdirначинается с=или$SYSROOT, то=или$SYSROOTзаменяется префиксомsysroot.-l library— искать библиотеку по имени библиотеки при линковке. Опция передается напрямую компоновщику через GCC. Можно обратиться к документации компоновщика за подробным описанием.@file— Чтение параметров командной строки из файла. Прочитанные параметры вставляются вместо исходного параметра@file. Если файл не существует или не может быть прочитан, то опция будет обработана буквально, а не удалена.