Документация
ОС Аврора 5.0.1

Набор инструментов 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.

Например:

  1. Войти в среду сборки:

    ~/AuroraOS/bin/sfdk engine exec
    

    Команда приводится для Unix-совместимого терминала. В Linux и macOS можно использовать стандартный терминал, в Windows необходимо использовать Git Bash.

  2. Проверить версию установленного пакета cross-armv7hl-gcc:

    sudo zypper refresh
    zypper info cross-armv7hl-gcc
    

Именно эта версия GCC будет доступна для ScratchBox2 в режиме sdk-build в цели armv7hl.

Например:

  1. Войти в среду сборки:

    ~/AuroraOS/bin/sfdk engine exec
    
  2. Войти в цель SB2 в режиме sdk-build, предполагая, что цель уже существует:

    sb2 -R -t AuroraOS-<номер_релиза>-base-<архитектура> -m sdk-build
    

    Пример:

    sb2 -R -t AuroraOS-4.0.2.249-base-armv7hl -m sdk-build
    
  3. Проверить, какая версия 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. Если файл не существует или не может быть прочитан, то опция будет обработана буквально, а не удалена.

Мы используем cookies для персонализации сайта и его более удобного использования. Вы можете запретить cookies в настройках браузера.

Пожалуйста ознакомьтесь с политикой использования cookies.