From f7a908f096d163a936633ec842a83b24e261ec8e Mon Sep 17 00:00:00 2001 From: Egor Tsyganchuk Date: Tue, 31 Mar 2026 18:09:01 +0300 Subject: [PATCH] Update build-toolchain.sh and README.md for toolchain environment script changes - Modified build-toolchain.sh to copy env.sh from the scripts directory instead of the top-level directory, ensuring proper organization. - Updated README.md to reflect the new version of uClibc-ng and clarify the structure of the output archive, including the location of env.sh within the archive. --- README.md | 49 +++++++++++++++------------------------- build-toolchain.sh | 2 +- env.sh => scripts/env.sh | 0 3 files changed, 19 insertions(+), 32 deletions(-) rename env.sh => scripts/env.sh (100%) diff --git a/README.md b/README.md index e99ce4f..a587601 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ | Binutils | 2.42 | Ассемблер, линковщик, утилиты | | GCC | 13.4.0 | Компилятор C/C++ | | Linux (headers) | 4.9.224 | Заголовочные файлы ядра | -| uClibc-ng | 1.0.55 | Стандартная библиотека C | +| uClibc-ng | 1.0.34 | Стандартная библиотека C | ### Дополнительные библиотеки @@ -78,45 +78,32 @@ sudo apt install -y make gcc g++ cmake wget bzip2 tar sed grep xz-utils 7. Сборка дополнительных библиотек 8. Упаковка результата в архив -На выходе создаётся архив `toolset-jlv-armv7-m-gcc13.4.0-uclibc1.0.55.tar.xz`. +На выходе создаётся архив `toolset-jlv-armv7-m-gcc13.4.0-uclibc1.0.34.tar.xz`. Внутри архива: -### 3. Настройка окружения +- каталог `arm-uclinuxfdpiceabi/` — установленный тулчейн (как после `prefix`); +- файл `env.sh` в том же каталоге, что и `arm-uclinuxfdpiceabi/` (без отдельной папки `scripts`). -Есть два режима работы `env.sh`. +В репозитории шаблон для упаковки лежит в `scripts/env.sh`, при сборке архива он копируется в корень как `env.sh`. -Обычный режим: +### 3. Настройка окружения после распаковки архива + +Распакуйте архив в удобное место и перейдите в каталог, где лежат `arm-uclinuxfdpiceabi/` и `env.sh`: ```bash +tar -xf toolset-jlv-armv7-m-gcc13.4.0-uclibc1.0.34.tar.xz +cd <каталог_распаковки> source ./env.sh ``` -Этот режим работает "как раньше": -- добавляет `${PWD}/arm-uclinuxfdpiceabi/bin` в `PATH` -- задаёт `CFLAGS`, `CFLAGS_FOR_TARGET`, `CXXFLAGS_FOR_TARGET` -- задаёт `SUBARCH=armv7-m` и `SUBMODE=thumb` -- не переопределяет `CC`/`CXX`, поэтому не мешает хостовой сборке под WSL - -Режим полного toolchain-окружения: - -```bash -source ./env.sh --toolchain /путь/к/install [arflags] -``` - -Этот режим используется сборочными скриптами и дополнительно устанавливает `CC`, `CXX`, `CPP`, `LD`, `AR`, `RANLIB`, `STRIP`, `OBJCOPY`, `OBJDUMP`, `SYSROOT`, `LDFLAGS` и добавляет путь к тулчейну в `PATH`. - -Деактивация: - -```bash -source ./env.sh --toolchain --unregister -``` +Скрипт задаёт `TOP` как текущий каталог, добавляет `${TOP}/arm-uclinuxfdpiceabi/bin` в `PATH`, выставляет `CFLAGS` / `CFLAGS_FOR_TARGET` / `CXXFLAGS_FOR_TARGET`, `SUBARCH` и `SUBMODE`. ## Флаги компиляции | Переменная | Значение | Назначение | |------------|----------|------------| -| `CFLAGS` | `-O2` | Флаги хостовой/toolset-сборки по умолчанию | -| `CFLAGS_FOR_TARGET` | `-Os -mthumb` | Оптимизация по размеру, Thumb-инструкции для target | -| `LDFLAGS` | `-Wl,--fdpic` | Линковка с поддержкой FDPIC | +| `CFLAGS` | `-O2` | Базовые флаги оптимизации | +| `CFLAGS_FOR_TARGET` | `-Os -mthumb` | Оптимизация по размеру, Thumb для target | +| `LDFLAGS` | `-Wl,--fdpic` | Линковка с поддержкой FDPIC (при полной настройке toolchain) | ## Структура каталогов @@ -125,15 +112,15 @@ build-toolchain/ ├── build-toolchain.sh # Основной скрипт сборки ├── build-libraries.sh # Сборка дополнительных библиотек ├── download_prerequisites.sh # Загрузка исходников -├── env.sh # Настройка окружения +├── scripts/ +│ └── env.sh # Настройка окружения (копируется в архив) ├── config/ # Конфигурации uClibc │ ├── config-uClibc-ng-1.0.34 -│ └── config-uClibc-ng-1.0.55 +│ └── … ├── src/ # Исходный код (после загрузки) │ ├── toolchain/ # Архивы компонентов тулчейна │ └── libs/ # Архивы библиотек -├── build/ # Каталог сборки (создаётся автоматически) -└── install/ # Каталог установки (создаётся автоматически) +└── build/ # Каталог сборки (создаётся автоматически) ``` ## Лицензия diff --git a/build-toolchain.sh b/build-toolchain.sh index 074ce7b..2a2ecf1 100755 --- a/build-toolchain.sh +++ b/build-toolchain.sh @@ -220,7 +220,7 @@ trap 'rm -rf "$WDIR"' EXIT ARCHIVE_TOOLCHAIN_DIR="${WDIR}/${TARGET}" mkdir -p "${ARCHIVE_TOOLCHAIN_DIR}" cp -a "${INSTALL_DIR}"/* "${ARCHIVE_TOOLCHAIN_DIR}/" -cp -a "${TOP}/env.sh" "${WDIR}/env.sh" +cp -a "${TOP}/scripts/env.sh" "${WDIR}/env.sh" find "${ARCHIVE_TOOLCHAIN_DIR}" -type f -executable -exec strip -p {} \; 2>/dev/null || true diff --git a/env.sh b/scripts/env.sh similarity index 100% rename from env.sh rename to scripts/env.sh