Egor Tsyganchuk a79d453c78 Refactor build-libraries.sh to streamline OpenSSL configuration
- Removed several disabled options from the OpenSSL build configuration to simplify the setup process.
- Enhanced clarity by reducing the complexity of the configuration flags used during the build.
2026-03-31 10:25:03 +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
  • bzip2
  • tar
  • стандартные утилиты (grep, sed и т.д.)

Для Ubuntu/WSL можно установить минимальный набор так:

sudo apt update
sudo apt install -y make gcc g++ cmake wget bzip2 tar sed grep xz-utils

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

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. Настройка окружения

Есть два режима работы env.sh.

Обычный режим:

source ./env.sh

Этот режим работает "как раньше":

  • добавляет ${PWD}/arm-uclinuxfdpiceabi/bin в PATH
  • задаёт CFLAGS, CFLAGS_FOR_TARGET, CXXFLAGS_FOR_TARGET
  • задаёт SUBARCH=armv7-m и SUBMODE=thumb
  • не переопределяет CC/CXX, поэтому не мешает хостовой сборке под WSL

Режим полного toolchain-окружения:

source ./env.sh --toolchain /путь/к/install [arflags]

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

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

source ./env.sh --toolchain --unregister

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

Переменная Значение Назначение
CFLAGS -O2 Флаги хостовой/toolset-сборки по умолчанию
CFLAGS_FOR_TARGET -Os -mthumb Оптимизация по размеру, Thumb-инструкции для target
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%