Egor Tsyganchuk a0b70bd271 Make --register accept install root instead of bin directory
env.sh now appends /bin internally, so callers pass the install root
(e.g. build/install) consistently, both when using the default path
and when specifying it explicitly.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-18 10:10:52 +03:00

Build Toolchain — кросс-компилятор для ARM uClinux FDPIC

Набор скриптов для сборки кросс-компилятора под целевую платформу ARM uClinux FDPIC (Thumb, ARMv7-m).

Целевой триплет: arm-uclinuxfdpiceabi

Состав тулчейна

Компонент Версия Назначение
Binutils 2.42 Ассемблер, линковщик, утилиты
GCC 13.4.0 Компилятор C/C++
Linux (headers) 4.9.224 Заголовочные файлы ядра
uClibc-ng 1.0.55 Стандартная библиотека C

Дополнительные библиотеки

Библиотека Версия Назначение
zlib 1.2.13 Сжатие данных
OpenSSL 3.0.13 Криптография
LibVNCServer 0.9.14 VNC-сервер
FreeType 2.13.2 Рендеринг шрифтов

Все библиотеки собираются статически.

Характеристики целевой платформы

  • Архитектура: ARM 32-bit (ARMv7-m)
  • Набор инструкций: Thumb
  • ABI: EABI с поддержкой FDPIC
  • Плавающая точка: программная (soft float)
  • Потоки: отключены
  • TLS: отключён

Зависимости хостовой системы

  • bash
  • make
  • gcc (или другой C-компилятор для хоста)
  • cmake
  • wget
  • tar
  • стандартные утилиты (grep, sed и т.д.)

Использование

1. Загрузка исходников

./download_prerequisites.sh

Скрипт загружает архивы исходного кода всех компонентов в каталоги src/toolchain/ и src/libs/. Уже загруженные архивы пропускаются.

2. Сборка тулчейна

./build-toolchain.sh

Сборка выполняется поэтапно:

  1. Распаковка архивов
  2. Сборка Binutils
  3. Сборка GCC (этап 1 — минимальный компилятор C без libc)
  4. Установка заголовочных файлов ядра Linux
  5. Сборка uClibc-ng
  6. Сборка GCC (этап 2 — полный компилятор C/C++ с поддержкой FDPIC)
  7. Сборка дополнительных библиотек
  8. Упаковка результата в архив

На выходе создаётся архив toolset-jlv-armv7-m-gcc13.4.0-uclibc1.0.55.tar.xz.

3. Настройка окружения

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

source ./env.sh --register /путь/к/install/bin

Скрипт устанавливает переменные CC, CXX, LD, AR, RANLIB, STRIP, CFLAGS, LDFLAGS, SYSROOT и добавляет путь к тулчейну в PATH.

Деактивация:

source ./env.sh --unregister

Флаги компиляции

Переменная Значение Назначение
CFLAGS -Os -mthumb Оптимизация по размеру, Thumb-инструкции
LDFLAGS -Wl,--fdpic Линковка с поддержкой FDPIC

Структура каталогов

build-toolchain/
├── build-toolchain.sh          # Основной скрипт сборки
├── build-libraries.sh          # Сборка дополнительных библиотек
├── download_prerequisites.sh   # Загрузка исходников
├── env.sh                      # Настройка окружения
├── config/                     # Конфигурации uClibc
│   ├── config-uClibc-ng-1.0.34
│   └── config-uClibc-ng-1.0.55
├── src/                        # Исходный код (после загрузки)
│   ├── toolchain/              # Архивы компонентов тулчейна
│   └── libs/                   # Архивы библиотек
├── build/                      # Каталог сборки (создаётся автоматически)
└── install/                    # Каталог установки (создаётся автоматически)

Лицензия

Компоненты тулчейна распространяются под собственными лицензиями (GPL, LGPL и др.).

Description
No description provided
Readme 188 KiB
Languages
Shell 100%