Gnu arm linux gcc

Пакет: gcc-arm-linux-gnueabi (4:6.3.0-4)

Ссылки для gcc-arm-linux-gnueabi

Ресурсы Debian:

Исходный код gcc-defaults:

Сопровождающие:

Подобные пакеты:

GNU C compiler for the armel architecture

This is the GNU C compiler, a fairly portable optimizing compiler for C.

This is a dependency package providing the default GNU C cross-compiler for the armel architecture.

Другие пакеты, относящиеся к gcc-arm-linux-gnueabi

  • зависимости
  • рекомендации
  • предложения
  • enhances
  • dep: cpp-arm-linux-gnueabi (>= 4:6.3.0-4) GNU C preprocessor (cpp) for the armel architecture
  • dep: gcc-6-arm-linux-gnueabi (>= 6.3.0-9

    ) GNU C compiler

  • rec: libc6-dev-armel-cross GNU C Library: Development Libraries and Header Files (for cross-compiling) или libc-dev-armel-cross виртуальный пакет, предоставляемый libc6-dev-armel-cross
  • sug: autoconf automatic configure script builder
  • sug: automake Tool for generating GNU Standards-compliant Makefiles
  • sug: bison YACC-compatible parser generator
  • sug: flex fast lexical analyzer generator
  • sug: gcc-doc documentation for the GNU compilers (gcc, gobjc, g++)
  • sug: gdb-arm-linux-gnueabi Пакет недоступен
  • sug: libtool Сценарий сопровождения общих библиотек
  • sug: make утилита управления компиляцией
    также виртуальный пакет, предоставляемый make-guile
  • sug: manpages-dev Manual pages about using GNU/Linux for development

Загрузка gcc-arm-linux-gnueabi

Загрузить для всех доступных архитектур

Архитектура Размер пакета В установленном виде Файлы
amd64 1,3 Кб 24,0 Кб [список файлов]
arm64 1,3 Кб 24,0 Кб [список файлов]
i386 1,3 Кб 24,0 Кб [список файлов]

Эта страница также доступна на следующих языках (Как установить язык по умолчанию):

Чтобы сообщить о проблеме, связанной с веб-сайтом, отправьте сообщение (на английском) в список рассылки debian-www@lists.debian.org. Прочую контактную информацию см. на странице Debian Как с нами связаться.

Авторские права © 1997 — 2021 SPI Inc.; См. условия лицензии. Debian это торговый знак компании SPI Inc. Об этом сайте.

Источник

Кросскомпиляция под ARM

Достаточно давно хотел освоить сабж, но всё были другие более приоритетные дела. И вот настала очередь кросскомпиляции.

В данном посте будут описаны:

  1. Инструменты
  2. Элементарная технология кросскомпиляции
  3. И, собственно, HOW2

Кому это интересно, прошу под кат.

Вводная

Одно из развивающихся направлений в современном IT это IoT. Развивается это направление достаточно быстро, всё время выходят всякие крутые штуки (типа кроссовок со встроенным трекером или кроссовки, которые могут указывать направление, куда идти (специально для слепых людей)). Основная масса этих устройств представляют собой что-то типа «блютуз лампочки», но оставшаяся часть являет собой сложные процессорные системы, которые собирают данные и управляют этим огромным разнообразием всяких умных штучек. Эти сложные системы, как правило, представляют собой одноплатные компьютеры, такие как Raspberry Pi, Odroid, Orange Pi и т.п. На них запускается Linux и пишется прикладной софт. В основном, используют скриптовые языки и Java. Но бывают приложения, когда необходима высокая производительность, и здесь, естественно, требуются C и C++. К примеру, может потребоваться добавить что-то специфичное в ядро или, как можно быстрее, высчитать БПФ. Вот тут-то и нужна кросскомпиляция.

Если проект не очень большой, то его можно собирать и отлаживать прямо на целевой платформе. А если проект достаточно велик, то компиляция на целевой платформе будет затруднительна из-за временных издержек. К примеру, попробуйте собрать Boost на Raspberry Pi. Думаю, ожидание сборки будет продолжительным, а если ещё и ошибки какие всплывут, то это может занять ох как много времени.

Поэтому лучше собирать на хосте. В моём случае, это i5 с 4ГБ ОЗУ, Fedora 24.

Инструменты

Для кросскомпиляции под ARM требуются toolchain и эмулятор платформы либо реальная целевая платформа.

Т.к. меня интересует компиляция для ARM, то использоваться будет и соответствующий toolchain.

Toolchain’ы делятся на несколько типов или триплетов. Триплет обычно состоит из трёх частей: целевой процессор, vendor и OS, vendor зачастую опускается.

  • *-none-eabi — это toolchain для компиляции проекта работающего в bare metal.
  • *eabi — это toolchain для компиляции проекта работающего в какой-либо ОС. В моём случае, это Linux.
  • *eabihf — это почти то же самое, что и eabi, с разницей в реализации ABI вызова функций с плавающей точкой. hf — расшифровывается как hard float.

Описанное выше справедливо для gcc и сделанных на его базе toolchain’ах.

Сперва я пытался использовать toolchain’ы, которые лежат в репах Fedora 24. Но был неприятно удивлён этим:

Поискав, наткнулся на toolchain от компании Linaro. И он меня вполне устроил.

Второй инструмент- это QEMU. Я буду использовать его, т.к. мой Odroid-C1+ пал смертью храбрых (нагнулся контроллер SD карты). Но я таки успел с ним чуток поработать, что не может не радовать.

Элементарная технология кросскомпиляции

Собственно, ничего необычного в этом нет. Просто используется toolchain в роли компилятора. А стандартные библиотеки поставляются вместе с toolchain’ом.

Выглядит это так:

Какие ключи у toolchain’а можно посмотреть на сайте gnu, в соответствующем разделе.

Для начала нужно запустить эмуляцию с интересующей платформой. Я решил съэмулировать Cortex-A9.

После нескольких неудачных попыток наткнулся на этот how2, который оказался вполне вменяемым, на мой взгляд.

Ну сперва, само собою, нужно заиметь QEMU. Установил я его из стандартных репов Fedor’ы.

Далее создаём образ жёсткого диска, на который будет установлен Debian.

По этой ссылке скачал vmlinuz и initrd и запустил их в эмуляции.

Далее просто устанавливаем Debian на наш образ жёсткого диска (у меня ушло

После установки нужно вынуть из образа жёсткого диска vmlinuz и initrd. Делал я это по описанию отсюда.

Сперва узнаём смещение, где расположен раздел с нужными нам файлами:

Теперь по этому смещению примонтируем нужный нам раздел.

Копируем файлы vmlinuz и initrd и размонтируем жёсткий диск.

Теперь можно запустить эмуляцию.

И вот заветное приглашение:

Теперь с хоста по SSH можно подцепиться к симуляции.

Теперь можно и собрать программку. По Makefile’у ясно, что будет калькулятор. Простенький.

Собираем на хосте исполняемый файл.

Отмечу, что проще собрать с ключом -static, если нет особого желания предаваться плотским утехам с библиотеками на целевой платформе.

Копируем исполняемый файл на таргет и проверяем.

Собственно, вот такая она, эта кросскомпиляция.

UPD: Подправил информацию по toolchain’ам по комментарию grossws.

Источник

8.3-2019.03

The GNU Toolchain for the Cortex-A Family is a ready-to-use, open source suite of tools for C, C++ and Assembly programming. This toolchain targets processors from the Arm Cortex-A family and implements the Arm A-profile architecture.

The toolchain includes the GNU Compiler (GCC) and is available free of charge directly for Windows and Linux operating systems. Follow the links on this page to download the correct version for your development environment.

See the downloaded package Release Notes, which are linked from this page, for full installation instructions.

GNU Toolchain for the A-profile Architecture

Version 8.3-2019.03

Released: March 29, 2019

What’s new in 8.3-2019.03

We are pleased to announce the Arm release of the pre-built GNU cross-toolchain for the A-profile cores: GCC 8.3-2019.03.

This is the same toolchain that was previously distributed by Linaro.

For more information about the GNU Arm toolchain and download the release packages, please go to the Arm Developer website.

In this release

Windows (i686-mingw32) hosted cross compilers

AArch32 bare-metal target (arm-eabi)

AArch64 bare-metal target (aarch64-elf)

x86_64 Linux hosted cross compilers

AArch32 bare-metal target (arm-eabi)

AArch64 ELF bare-metal target (aarch64-elf)

AArch32 target with hard float (arm-linux-gnueabihf)

AArch64 GNU/Linux big-endian target (aarch64_be-linux-gnu)

AArch64 GNU/Linux target (aarch64-linux-gnu)

Sources

Linaro ABE manifest files for x86_64 hosted cross compilers

Release Note for GNU-A Downloads 8.3-2019.03

Features

  • All GCC 8.3 features. For details on GCC 8 release series, please refer to the list of changes, new features, and fixes.
  • Linaro specific pre-processor macros to ensure that this is a continuation from the Linaro releases.
  • Spectre v1 mitigation backport from upstream FSF trunk include the revisions listed below. This is an initial backport of those mitigations in the GNU toolchain and should be regarded as support for prototyping and early access only. Moreover, while the backports include support for the other architectures, they are included for completeness and all issues regarding these patches must be taken up upstream in the https://gcc.gnu.org/bugzilla by reproducing the same with upstream FSF trunk. Arm is interested in feedback regarding these workarounds for Spectre v1. A description of the mitigation has been published on LWN.net.
    • Arm — add speculation_barrier pattern
    • AArch64 — add speculation barrier
    • AArch64 — Add new option -mtrack-speculation
    • AArch64 — disable CB[N]Z TB[N]Z when tracking speculation
    • AArch64 — new pass to add conditional-branch speculation tracking
    • AArch64 — use CSDB based sequences if speculation tracking is enabled
    • targhooks — provide an alternative hook for targets that never execute speculatively
    • pdp11 — example of a port not needing a speculation barrier
    • targhooks — Add ATTRIBUTE_UNUSED
    • x86 — add speculation_barrier pattern
    • rs6000 — add speculation_barrier pattern
    • nvptx — Define TARGET_HAVE_SPECULATION_SAFE_VALUE
    • fr30 — Define to speculation_safe_value_not_needed
    • frv — Define to speculation_safe_value_not_needed
    • iq2000 — Define to speculation_safe_value_not_needed
    • m32r — Define to speculation_safe_value_not_needed
    • mcore — Define to speculation_safe_value_not_needed
    • msp430 — Define to speculation_safe_value_not_needed
    • rx — Define to speculation_safe_value_not_needed
    • v850 — Define to speculation_safe_value_not_needed
    • stormy16 — Define to speculation_safe_value_not_needed
    • h8300 — Define to speculation_safe_value_not_needed
    • m68k — Define to speculation_safe_value_not_needed
    • mn10300 — Define to speculation_safe_value_not_needed
    • nios2 — Define to speculation_safe_value_not_needed
    • spu — Define to speculation_safe_value_not_needed
    • pa — Define to speculation_safe_value_not_needed

Changes since Arm release GCC 8.2-2019.01

  • Bug 4249 — gcc-arm-8 releases contain .la files.
  • Bug 4251 — gcc-arm-8 mingw32 releases contain symlinks.
  • Bug 4253 — gcc-arm-8.2-2019.01 release uses gdb-8.1 instead of gdb-8.2.
  • Bug 4297 — ARM Toolchain use a Linux kernel headers -rc release.
  • Each binary release file now contains manifest.txt file with configuration flags for each toolchain component.
  • Additional Linaro ABE manifest files to build x86_64 host toolchains.
  • Experimental multilib support for arm-eabi toolchain (multilib a+rm-profile with newlib-nano enabled).

Content

This release includes the following items:

Sources provided in release source tar ball.

GCC 8 branch based on revision id r269117 with some additional patches ported on top as described in Features section.

GDB-with-python support for Python 2.7.6 (x86_64 builds).

GDB-with-python support for Python 2.7.13 (i686-mingw32 builds).

libgmp 4.3.2
libisl 0.15
libmpfr 3.1.6
libmpc 0.8.2
libiconv 1.15

Sources provided in release source tar ball.

Host requirements

Component Description
GCC 8.3
Host name Host Triplet Notation
Windows 7 32/64 bits or later i686-mingw32
Ubuntu 14.04 LTS x86_64 or later or RHEL 6 x86_64 x86_64

The GNU Toolchains

Toolchain Triplet The GNU Toolchain Description
i686-mingw32-arm-eabi i686-mingw32 hosted cross compiler for AArch32 bare-metal target.
i686-mingw32-aarch64-elf i686-mingw32 hosted cross compiler for AArch64 ELF bare-metal target.
x86_64-aarch64-elf x86_64 hosted cross compiler for AArch64 ELF bare-metal target.
x86_64-aarch64_be-elf x86_64 hosted cross compiler for AArch64 ELF bare-metal, big-endian target.
x86_64-aarch64-linux-gnu x86_64 hosted cross compiler for AArch64 GNU/Linux target.
x86_64-aarch64_be-linux-gnu x86_64 hosted cross compiler for AArch64 GNU/Linux big-endian target.
x86_64-arm-eabi x86_64 hosted cross compiler for AArch32 bare-metal target.
Note: This toolchain has enabled experimental multilib support: multilib a+rm-profile with newlib-nano.
x86_64-arm-linux-gnueabi x86_64 hosted cross compiler for AArch32 target with soft float.
x86_64-arm-linux-gnueabihf x86_64 hosted cross compiler for AArch32 target with hard float.

Release Contains Files

gcc-arm-*.tar.xz The compiler and tools.
gcc-arm-src-snapshot-*.tar.xz The compiler and tools sources.
gcc-arm-src-snapshot-*-manifest.txt Text manifest file with list of remote repositories of toolchain and tools.
runtime-gcc-*.tar.xz Runtime libraries needed on the target.
sysroot-*.tar.xz A set of libraries and headers to develop against.
gcc-arm-*-abe-manifest.txt Input files for Linaro ABE build system.
*.asc md5 checksum files.

Installation instructions

Extract XZ compressed release archive using TAR archiving utility:

Compute and check MD5 checksum of XZ compressed release archives using md5sum utility:

The prebuilt binary bundles can be un-tarred and executed in place. Assuming a RHEL6 host. Unpack the Linux cross toolchain:

Building toolchain from source

You can build GNU cross-toolchain for the A-profile from sources using Linaro ABE (Advanced Build Environment) and provided ABE manifest files.

Below example shows how to build gcc-arm-aarch64-linux-gnu toolchain from sources using Linaro ABE build system.

Instructions

Clone ABE one of the URL below and checkout the stable branch (see Getting ABE):

Create the build directory and change to it. Any name for the directory will work (see Building Toolchains With ABE):

Configure ABE (from the build directory):

And finally build toolchain (from the build directory):

Known issues

  • Spectre v1 mitigations are provided here for early access and thus might have stability issues. On AArch32 we are currently aware of one issue as documented at PR86951.
  • GDB’s Python support requires Python compiled with UCS-4 support (built with —enable-unicode=ucs4) for both hosts x86_64 and i686-mingw32.
  • GDB’s Python support requires Python DLL dependencies for i686-mingw32 host.
  • Toolchains dedicated for i686-mingw32 host require mingw-w64 library, a complete runtime environment for GCC.

Ask questions

For any questions, please use the Arm Communities forums.

Report bugs

Please report any bugs via the Linaro Bugzilla.

Источник

Читайте также:  Install all dll files windows 10
Оцените статью