Как получить тулчейны

Опубликовано Sergey Worm - вт, 06/05/2018 - 15:12

Проекты на основе WrmOS могут быть собраны любым тулчейном, основанном на GCC. Используемый тулчейн определяется в конфигурационном файле проекта. Поскольку WrmOS спроектирована для встраимых проектов, эта статье описывает как получить кроссплатформенные тулчейны.

Существует 2 способа получить тулчейн:

  • загрузить собранный тулчейн;
  • собрать тулчейн из исходников.
Содержание
1. Загрузить тулчейн
2. Собрать тулчейн из исходников

1. Загрузить тулчейн [наверх]


  1. Загрузить архив с собранным тулчейном:
  2. Извлечь содержимое архива и переместить его в директорию для установки (например ~/toolchain/).
  3. Добавить путь к тулчейну в своё окружение (см. шаг 2.7 ниже в пошаговом руководстве).

2. Собрать тулчейн из исходников [up]


Наиболее простой способ получить кроссплатформенный тулчейн - это использовать проект Buildroot. Ниже приведено пошаговое руководство как загрузить и собрать тулчейн. Это руководство общее для всех архитектур процессора. Различия отмечены дополнительно. При этом слово $ARCH должно быть изменено на целевую архитектуру.

Пошаговое руководство

2.1. Клонировать git-репозиторий Buildroot:

git clone git://git.buildroot.net/buildroot
cd buildroot

2.2. Переключить состояние репозитория на последний релиз (используйте "git tag" чтобы увидеть список тагов):

git checkout 2018.02.2

2.3. Выбрать базовую конфигурацию (этот шаг архитектуро-зависимый):

SPARCv8:  make qemu_sparc_ss10_defconfig
ARM:      make qemu_arm_vexpress_defconfig
x86:      make qemu_x86_defconfig
x86_64:   make qemu_x86_64_defconfig

2.4. Настроить конфигурацию:

make menuconfig
    Toolchain --> GCC compiler Version --> gcc 7.x
    Toolchain --> Enable C++ support --> on
    Toolchain --> Enable compiler link-time-optimization support --> on
    Toolchain --> Build cross gdb for the host --> on

2.5. Запустить сборку (это может занять несколько минут):

make toolchain host-gdb

2.6. Скопировать рузультат сборки в директорию для установки (например ~/toolchains/):

# ARCH = sparc | arm | i686 | x86_64
cp -r output/host/ ~/toolchains/$ARCH-buildroot-linux-uclibc_br2018.02.2_gcc7.3.0

2.7. Добавить путь к тулчейну в своё окружение:

# ARCH = sparc | arm | i686 | x86_64
vi ~/.bashrc
    a) add line "PATH=$PATH:~/toolchains/$ARCH-buildroot-linux-uclibc_br2018.02.2_gcc7.3.0/usr/bin"
    b) exit from vi
source ~/.bashrc

2.8. Проверить установку:

# ARCH = sparc | arm | i686 | x86_64
$ARCH-linux-gcc --version
$ARCH-linux-gcc.br_real (Buildroot 2018.02.2) 7.3.0
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Всё готово. Сейчас вы можете использовать "gccprefix = $ARCH-linux-" в своеём конфигурационном файле проекта.

Чтобы пересобрать тулчейн для другой процессорной архитектуре необходимо выполнить:

  1. make clean
  2. go to step 2.3.

Краткое руководство

1.  git clone git://git.buildroot.net/buildroot
2.  cd buildroot
3.  git checkout 2018.02.2
4.  sparcv8:  make qemu_sparc_ss10_defconfig
        arm:  make qemu_arm_vexpress_defconfig
        x86:  make qemu_x86_defconfig
     x86_64:  make qemu_x86_64_defconfig
5.  make menuconfig
    Toolchain --> GCC compiler Version --> gcc 7.x
    Toolchain --> Enable C++ support --> on
    Toolchain --> Enable compiler link-time-optimization support --> on
    Toolchain --> Build cross gdb for the host --> on
6.  make toolchain host-gdb
7.  # install
    sparcv8:  cp -r output/host/ ~/toolchains/sparc-buildroot-linux-uclibc_br2018.02.2_gcc7.3.0
    arm:      cp -r output/host/ ~/toolchains/arm-buildroot-linux-uclibc_br2018.02.2_gcc7.3.0
    x86:      cp -r output/host/ ~/toolchains/i686-buildroot-linux-uclibc_br2018.02.2_gcc7.3.0
    x86_64:   cp -r output/host/ ~/toolchains/x86_64-buildroot-linux-uclibc_br2018.02.2_gcc7.3.0
8.  # add to ~/.bashrc
    sparcv8:  PATH=~/toolchains/sparc-buildroot-linux-uclibc_br2018.02.2_gcc7.3.0/usr/bin:$PATH
    arm:      PATH=~/toolchains/arm-buildroot-linux-uclibc_br2018.02.2_gcc7.3.0/usr/bin:$PATH
    x86:      PATH=~/toolchains/i686-buildroot-linux-uclibc_br2018.02.2_gcc7.3.0/usr/bin:$PATH
    x86_64:   PATH=~/toolchains/x86_64-buildroot-linux-uclibc_br2018.02.2_gcc7.3.0/usr/bin:$PATH
9.  source ~/.bashrc

# NOTE:  to re-build toolchain for other processor architecture do:
#        a) make clean
#        b) go to step 4