# 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. Загрузка исходников ```bash ./download_prerequisites.sh ``` Скрипт загружает архивы исходного кода всех компонентов в каталоги `src/toolchain/` и `src/libs/`. Уже загруженные архивы пропускаются. ### 2. Сборка тулчейна ```bash ./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. Настройка окружения Активация переменных окружения для работы с тулчейном: ```bash source ./env.sh --register /путь/к/install/bin ``` Скрипт устанавливает переменные `CC`, `CXX`, `LD`, `AR`, `RANLIB`, `STRIP`, `CFLAGS`, `LDFLAGS`, `SYSROOT` и добавляет путь к тулчейну в `PATH`. Деактивация: ```bash 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 и др.).