Набор инструментов 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
. Если файл не существует или не может быть прочитан, то опция будет обработана буквально, а не удалена.