Added build-libraries.sh

This commit is contained in:
2025-12-05 14:06:28 +03:00
parent b82f2d72d1
commit 54555cee39
3 changed files with 126 additions and 2 deletions

116
build-libraries.sh Executable file
View 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

View File

@@ -183,6 +183,12 @@ make -j$(nproc)
make install
cd "${TOP}"
# ==================================================================
# Установка библиотек
# ==================================================================
. ./build_libraries.sh
# ==================================================================
# Strip и упаковка
# ==================================================================

6
env.sh
View File

@@ -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