#!/bin/bash # env.sh — окружение для сборки под arm-uclinuxfdpiceabi (FDPIC, thumb) TOP="$(pwd)" TARGET=arm-uclinuxfdpiceabi TOOLCHAIN=arm-uclinuxfdpiceabi # Если передали путь — используем его, иначе берём bin в текущей папке # Пример вызова: ./env.sh /opt/toolchains/arm/bin TOOLCHAIN_PATH="${1:-${TOP}/${TARGET}/bin}" # Проверка, что путь существует if [ ! -d "$TOOLCHAIN_PATH" ]; then echo "Ошибка: директория с тулчейном не найдена: $TOOLCHAIN_PATH" exit 1 fi SYSROOT="${TOOLCHAIN_ROOT}/sysroot" PREFIX="${SYSROOT}/usr" # Флаги тулчейна CFLAGS_TOOLSET='-O2' ARFLAGS_TARGET="${2:-}" CFLAGS_TARGET='-Os -mthumb' CXXFLAGS_TARGET=$CFLAGS_TARGET LDFLAGS_TARGET='-Wl,--fdpic' # Указание полного пути к компиляторам CC="${TOOLCHAIN_PATH}/${TOOLCHAIN}-gcc ${CFLAGS_TOOLSET} ${CFLAGS_TARGET}" CXX="${TOOLCHAIN_PATH}/${TOOLCHAIN}-g++ ${CFLAGS_TOOLSET} ${CXXFLAGS_TARGET}" CPP="${TOOLCHAIN_PATH}/${TOOLCHAIN}-cpp" LD="${TOOLCHAIN_PATH}/${TOOLCHAIN}-ld" AR="${TOOLCHAIN_PATH}/${TOOLCHAIN}-ar ${ARFLAGS_TARGET}" AS="${TOOLCHAIN_PATH}/${TOOLCHAIN}-as" NM="${TOOLCHAIN_PATH}/${TOOLCHAIN}-nm" RANLIB="${TOOLCHAIN_PATH}/${TOOLCHAIN}-ranlib" STRIP="${TOOLCHAIN_PATH}/${TOOLCHAIN}-strip" OBJCOPY="${TOOLCHAIN_PATH}/${TOOLCHAIN}-objcopy" OBJDUMP="${TOOLCHAIN_PATH}/${TOOLCHAIN}-objdump" # PATH — toolchain/bin должен быть в начале PATH="${TOOLCHAIN_PATH}:${PATH}" # Экспорт export SYSROOT export PREFIX export TARGET export TOOLCHAIN export CC CXX CPP LD AR AS NM RANLIB STRIP OBJCOPY OBJDUMP export CFLAGS CXXFLAGS LDFLAGS export CFLAGS_FOR_TARGET CXXFLAGS_FOR_TARGET LDFLAGS_FOR_TARGET export PATH export SUBARCH=armv7-m export SUBMODE=thumb echo "Окружение для ${TARGET} (Thumb/FDPIC) активировано" echo " TOOLCHAIN_PATH = $TOOLCHAIN_PATH" echo " CC = $CC" echo " CXX = $CXX"