ThemisDB unterstützt mehrere ARM-Plattformen:
| Plattform | Architektur | Prozessor | Guide |
|---|---|---|---|
| Raspberry Pi 4+ | ARMv8 (64-bit) | Cortex-A72 | BUILD_RASPBERRY_PI.md |
| QNAP NAS | ARMv7/ARMv8 | Varies | BUILD_QNAP.md |
| Generic ARM64 | ARMv8 (64-bit) | Any | Siehe unten |
| Generic ARMv7 | ARMv7 (32-bit) | Any | Siehe unten |
# Arm64 (64-bit) Toolchain
sudo apt-get install -y gcc-aarch64-linux-gnu g++-aarch64-linux-gnu
# ARMv7 (32-bit) Toolchain
sudo apt-get install -y gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf
# CMake und Dependencies
sudo apt-get install -y cmake ninja-build pkg-configErstelle cmake/toolchain-arm64.cmake:
# CMake Toolchain für ARM64 (aarch64)
set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR aarch64)
set(CMAKE_C_COMPILER aarch64-linux-gnu-gcc)
set(CMAKE_CXX_COMPILER aarch64-linux-gnu-g++)
set(CMAKE_FIND_ROOT_PATH /usr/aarch64-linux-gnu)
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)Oder für ARMv7:
# CMake Toolchain für ARMv7 (32-bit)
set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR arm)
set(CMAKE_C_COMPILER arm-linux-gnueabihf-gcc)
set(CMAKE_CXX_COMPILER arm-linux-gnueabihf-g++)
set(CMAKE_FIND_ROOT_PATH /usr/arm-linux-gnueabihf)
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)cd /path/to/themis
# Configure mit ARM64 Toolchain
cmake -S . -B build-arm64 \
-G Ninja \
-DCMAKE_TOOLCHAIN_FILE=cmake/toolchain-arm64.cmake \
-DCMAKE_BUILD_TYPE=Release \
-DTHEMIS_ENABLE_LLM=OFF \
-DTHEMIS_ENABLE_GPU=OFF
# Build
cmake --build build-arm64 --parallel 8
# Binary: build-arm64/themis_server# Direkter Build auf ARM64 Hardware
cmake --preset linux-gcc-release
cmake --build build-wsl --parallel 4 # Weniger Cores auf RPicd /path/to/themis
# Configure mit ARMv7 Toolchain
cmake -S . -B build-armv7 \
-G Ninja \
-DCMAKE_TOOLCHAIN_FILE=cmake/toolchain-armv7.cmake \
-DCMAKE_BUILD_TYPE=Release \
-DTHEMIS_ENABLE_LLM=OFF
# Build
cmake --build build-armv7 --parallel 4vcpkg unterstützt auch ARM-Triplets:
# ARM64 Linux (aarch64)
export VCPKG_TARGET_TRIPLET=arm64-linux
# ARMv7 Linux (32-bit)
export VCPKG_TARGET_TRIPLET=arm-linux
# Dann wie gewohnt:
cmake --preset linux-gcc-releaseARM-Systeme haben oft weniger RAM (1-4GB). Optimierungen:
# Disable LTO (Link-Time Optimization) für weniger Memory
set(CMAKE_INTERPROCEDURAL_OPTIMIZATION OFF)
# Disable Benchmarks
set(THEMIS_BUILD_BENCHMARKS OFF)
# Minimal Tests
set(THEMIS_BUILD_TESTS OFF)
# Strip Symbols nach Build
add_custom_command(TARGET themis_server POST_BUILD
COMMAND arm-linux-gnueabihf-strip themis_server
)# Enable buildx
docker buildx create --name mybuilder --use
# Build für ARM64 + x86_64
docker buildx build -f docker/Dockerfile.themis-server \
--platform linux/arm64,linux/amd64 \
-t themis-server:multi-arch \
.
# Nur ARM64
docker buildx build -f docker/Dockerfile.themis-server \
--platform linux/arm64 \
-t themis-server:arm64 \
.# Auf Raspberry Pi oder ARM NAS direkt:
docker build -f docker/Dockerfile.themis-server \
-t themis-server:rpi4 \
--build-arg THEMIS_ENABLE_LLM=OFF \
.-
Weniger Parallel Jobs
cmake --build . --parallel 2 # Statt 8
-
Kleinere Binaries
cmake -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_STRIP=strip -
NEON SIMD aktivieren (wenn verfügbar)
cmake -DENABLE_NEON=ON
-
Swap für Build aktivieren
# Falls OOM während Build sudo fallocate -l 4G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile
- Raspberry Pi 4: BUILD_RASPBERRY_PI.md
- QNAP NAS: BUILD_QNAP.md
# Installiere ARM Toolchain
sudo apt-get install gcc-aarch64-linux-gnu g++-aarch64-linux-gnuCause: Mismatch zwischen Host und Target Architecture
# Check
file build-arm64/themis_server
# Output: ELF 64-bit LSB shared object, ARM aarch64# Reduziere Parallel Jobs
cmake --build . --parallel 1# vcpkg needs ARM configuration
export VCPKG_TARGET_TRIPLET=arm64-linux
cmake --preset linux-gcc-releaseNach erfolgreichem ARM-Build lesen Sie:
- ARM Deployment: docs/de/deployment/deployment_arm_build.md
- Releases: docs/de/releases/updates_distribution_strategy.md
- BUILD_RASPBERRY_PI.md - RPi-spezifisch
- BUILD_QNAP.md - QNAP-spezifisch
- cmake/CMakeLists.txt - CMake-Konfiguration