Compare commits
3 Commits
a46724cc90
...
54555cee39
| Author | SHA1 | Date | |
|---|---|---|---|
| 54555cee39 | |||
| b82f2d72d1 | |||
| 97c49567ce |
1
.gitignore
vendored
1
.gitignore
vendored
@@ -1,3 +1,4 @@
|
||||
lib
|
||||
build
|
||||
install
|
||||
*.tar.xz
|
||||
116
build-libraries.sh
Executable file
116
build-libraries.sh
Executable file
@@ -0,0 +1,116 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
# Подготавливаем переменные
|
||||
|
||||
TOP="$(pwd)"
|
||||
INSTALL_DIR="${TOP}/install"
|
||||
INSTALL_BIN_DIR="${INSTALL_DIR}/bin"
|
||||
|
||||
# Запускаем предварительно для того чтобы подтянуть переменные
|
||||
. ./env.sh "${INSTALL_BIN_DIR}"
|
||||
|
||||
# Подготавливаем пути к разделам
|
||||
|
||||
LIB_DIR="${TOP}/lib"
|
||||
SYSROOT_DIR="${INSTALL_DIR}${SYSROOT}"
|
||||
SYSROOT_ETC_DIR="${SYSROOT_DIR}/etc"
|
||||
SYSROOT_USR_DIR="${SYSROOT_DIR}/usr"
|
||||
BUILD_SRC_DIR="${TOP}/build"
|
||||
LIB_BUILD_DIR="${BUILD_SRC_DIR}/lib"
|
||||
|
||||
# ==================================================================
|
||||
# Проверка файла окружения
|
||||
# ==================================================================
|
||||
|
||||
# Проверяем существует ли файл
|
||||
if [ ! -f ./env.sh ]; then
|
||||
echo "Ошибка: файл env.sh не найден"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Проверяем имеет ли файл права на исполнение
|
||||
if [ ! -x ./env.sh ]; then
|
||||
echo "env.sh не имеет права на выполнение, добавляю..."
|
||||
chmod +x ./env.sh || { echo "Не удалось установить права"; exit 1; }
|
||||
fi
|
||||
|
||||
# ==================================================================
|
||||
# Распаковка библиотек
|
||||
# ==================================================================
|
||||
|
||||
echo "== Распаковка библиотек =="
|
||||
|
||||
# Создаем каталог для сборки библиотек
|
||||
mkdir -p "${LIB_BUILD_DIR}"
|
||||
|
||||
echo "== Поиск и распаковка архивов в ${LIB_DIR} =="
|
||||
|
||||
# Проходимся по *.tar.xz и *.tar.gz
|
||||
shopt -s nullglob
|
||||
for archive in "${LIB_DIR}"/*.tar.xz "${LIB_DIR}"/*.tar.gz; do
|
||||
# Если файлов нет – ничего не делаем
|
||||
[ -e "$archive" ] || continue
|
||||
|
||||
fname="$(basename "$archive")"
|
||||
pkg="${fname%.tar.*}" # имя папки после распаковки
|
||||
|
||||
echo "--------------------------------------"
|
||||
echo "Найден архив: $fname"
|
||||
echo "Распаковка в: ${LIB_BUILD_DIR}/${pkg}"
|
||||
echo "--------------------------------------"
|
||||
|
||||
mkdir -p "${LIB_BUILD_DIR}/${pkg}"
|
||||
tar -xf "$archive" -C "${LIB_BUILD_DIR}/${pkg}" --strip-components=1
|
||||
done
|
||||
shopt -u nullglob
|
||||
|
||||
echo "== Распаковка завершена =="
|
||||
|
||||
# ==================================================================
|
||||
# Установка окружения
|
||||
# ==================================================================
|
||||
|
||||
cd ${TOP}
|
||||
./env.sh "${INSTALL_BIN_DIR}" "rc"
|
||||
|
||||
cd "${LIB_BUILD_DIR}/zlib-1.2.13"
|
||||
./configure --prefix=${SYSROOT_USR_DIR} --libdir=${SYSROOT_USR_DIR}/lib
|
||||
make -j$(nproc)
|
||||
make install
|
||||
|
||||
# ==================================================================
|
||||
|
||||
cd ${TOP}
|
||||
./env.sh "${INSTALL_BIN_DIR}"
|
||||
|
||||
cd "${LIB_BUILD_DIR}/openssl-3.0.13"
|
||||
./Configure linux-armv4 \
|
||||
--prefix=${SYSROOT_USR_DIR} \
|
||||
--libdir=${SYSROOT_USR_DIR}/lib \
|
||||
--openssldir=${SYSROOT_ETC_DIR}/ssl \
|
||||
shared no-async no-comp no-idea no-tests no-threads no-asm no-secure-memory no-seed no-weak-ssl-ciphers \
|
||||
-DNO_FORK -DHAVE_FORK=0
|
||||
|
||||
make -j$(nproc) build_libs
|
||||
make install_dev
|
||||
|
||||
# ==================================================================
|
||||
|
||||
cd "${LIB_BUILD_DIR}/LibVNCServer-0.9.14"
|
||||
rm -rf build
|
||||
mkdir -p build && cd build
|
||||
cmake -S .. -B . \
|
||||
-DWITH_THREADS=OFF \
|
||||
-DWITH_TESTS=OFF \
|
||||
-DWITH_EXAMPLES=OFF \
|
||||
-DBUILD_SHARED_LIBS=ON \
|
||||
-DOPENSSL_ROOT_DIR="${SYSROOT_USR_DIR}" \
|
||||
-DOPENSSL_LIBRARIES="${SYSROOT_USR_DIR}/lib/libssl.so;${SYSROOT_USR_DIR}/lib/libcrypto.so" \
|
||||
-DOPENSSL_INCLUDE_DIR="${SYSROOT_USR_DIR}/include" \
|
||||
-DCMAKE_FIND_ROOT_PATH="${SYSROOT_DIR}" \
|
||||
-DCMAKE_SYSROOT="${SYSROOT_DIR}" \
|
||||
-DCMAKE_STAGING_PREFIX="${SYSROOT_USR_DIR}"
|
||||
|
||||
make -j${nproc}
|
||||
make install
|
||||
@@ -77,7 +77,7 @@ mkdir -p build/binutils && cd build/binutils
|
||||
--disable-werror
|
||||
make -j$(nproc) all
|
||||
make install
|
||||
cd ../../..
|
||||
cd "${TOP}"
|
||||
|
||||
# ==================================================================
|
||||
# GCC STAGE 1 (только C, без libc)
|
||||
@@ -86,7 +86,7 @@ echo "== Сборка GCC-${GCC_VER} Stage 1 =="
|
||||
|
||||
cd "${SRC_GCC}"
|
||||
./contrib/download_prerequisites
|
||||
cd ../../..
|
||||
cd "${TOP}"
|
||||
|
||||
mkdir -p build/gcc1 && cd build/gcc1
|
||||
"${SRC_GCC}/configure" \
|
||||
@@ -113,7 +113,7 @@ make -j$(nproc) all-gcc
|
||||
make install-gcc
|
||||
make -j$(nproc) all-target-libgcc
|
||||
make install-target-libgcc
|
||||
cd ../../..
|
||||
cd "${TOP}"
|
||||
|
||||
# ==================================================================
|
||||
# Linux headers
|
||||
@@ -183,6 +183,12 @@ make -j$(nproc)
|
||||
make install
|
||||
cd "${TOP}"
|
||||
|
||||
# ==================================================================
|
||||
# Установка библиотек
|
||||
# ==================================================================
|
||||
|
||||
. ./build_libraries.sh
|
||||
|
||||
# ==================================================================
|
||||
# Strip и упаковка
|
||||
# ==================================================================
|
||||
|
||||
6
env.sh
6
env.sh
@@ -15,11 +15,12 @@ if [ ! -d "$TOOLCHAIN_PATH" ]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
PREFIX="${TOOLCHAIN_ROOT}/sysroot/usr"
|
||||
SYSROOT="${TOOLCHAIN_ROOT}/sysroot"
|
||||
PREFIX="${SYSROOT}/usr"
|
||||
|
||||
# Флаги тулчейна
|
||||
CFLAGS_TOOLSET='-O2'
|
||||
ARFLAGS_TARGET=""
|
||||
ARFLAGS_TARGET="${2:-}"
|
||||
CFLAGS_TARGET='-Os -mthumb'
|
||||
CXXFLAGS_TARGET=$CFLAGS_TARGET
|
||||
LDFLAGS_TARGET='-Wl,--fdpic'
|
||||
@@ -41,6 +42,7 @@ OBJDUMP="${TOOLCHAIN_PATH}/${TOOLCHAIN}-objdump"
|
||||
PATH="${TOOLCHAIN_PATH}:${PATH}"
|
||||
|
||||
# Экспорт
|
||||
export SYSROOT
|
||||
export PREFIX
|
||||
export TARGET
|
||||
export TOOLCHAIN
|
||||
|
||||
Reference in New Issue
Block a user