Files
build-toolchain/README.md

119 lines
4.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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 и др.).