smallthinker/toolchains/cross_compile.md
This document provides a cross-compilation tutorial for multiple platforms. The xxx.cmake files in the folder correspond to the compilation configurations for the target platforms. Some of the content can be flexibly adjusted (e.g., CLANG_VERSION, TARGET_PYTHON_VERSION, etc.), the configuration given in this folder is the configuration used by the author during testing.
mkdir -p /data/rk3588_sysroot
sshfs rk3588:/ /data/rk3588_sysroot -o follow_symlinks,kernel_cache
cmake -S . -B build \
-DCMAKE_TOOLCHAIN_FILE=toolchains/rk3588.cmake \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DGGML_OPENMP=OFF \
-DBUILD_SHARED_LIBS=OFF \
-DPOWERINFER_NO_FFN_REPACK=ON \
cmake --build build --config RelWithDebInfo --target llama-cli llama-server -j32
rsync -avzP build/bin/llama-{cli,server} rk3588:/data/
mkdir -p /data/rk3576_sysroot
sshfs rk3576:/ /data/rk3576_sysroot -o follow_symlinks,kernel_cache
SYSROOT_PATH=/data/rk3576_sysroot cmake -S . -B build \
-DCMAKE_TOOLCHAIN_FILE=toolchains/rk3576.cmake \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DGGML_OPENMP=OFF \
-DLLAMA_CURL=OFF \
-DBUILD_SHARED_LIBS=OFF \
-DPOWERINFER_NO_FFN_REPACK=ON \
cmake --build build --config RelWithDebInfo --target llama-cli llama-server -j32
rsync -avzP build/bin/llama-cli rk3576:~
rsync -avzP build/bin/{llama-cli,llama-server} rk3576:~
mkdir -p /data/raspi_sysroot
sshfs raspi:/ /data/raspi_sysroot -o follow_symlinks,kernel_cache
SYSROOT_PATH=/data/raspi_sysroot cmake -S . -B build \
-DCMAKE_TOOLCHAIN_FILE=toolchains/raspi.cmake \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DGGML_OPENMP=OFF \
-DLLAMA_CURL=OFF \
-DBUILD_SHARED_LIBS=OFF \
-DPOWERINFER_NO_FFN_REPACK=ON \
cmake --build build --config RelWithDebInfo --target llama-cli llama-server -j32
rsync -avzP build/bin/llama-cli raspi:~
rsync -avzP build/bin/{llama-cli,llama-server} raspi:~
mkdir -p /data/rskx5_sysroot
sshfs rskx5:/ /data/rskx5_sysroot -o follow_symlinks,kernel_cache
SYSROOT_PATH=/data/rskx5_sysroot cmake -S . -B build \
-DCMAKE_TOOLCHAIN_FILE=toolchains/rskx5.cmake \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DGGML_OPENMP=OFF \
-DLLAMA_CURL=OFF \
-DBUILD_SHARED_LIBS=OFF \
-DPOWERINFER_NO_FFN_REPACK=ON \
cmake --build build --config RelWithDebInfo --target llama-cli llama-server -j32
rsync -avzP build/bin/llama-cli rskx5:~
rsync -avzP build/bin/{llama-cli,llama-server} rskx5:~
mkdir -p /data/rk3566_sysroot
sshfs rk3566:/ /data/rk3566_sysroot -o follow_symlinks,kernel_cache
SYSROOT_PATH=/data/rk3566_sysroot cmake -S . -B build \
-DCMAKE_TOOLCHAIN_FILE=toolchains/rk3566.cmake \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DGGML_OPENMP=OFF \
-DLLAMA_CURL=OFF \
-DBUILD_SHARED_LIBS=OFF \
-DPOWERINFER_NO_FFN_REPACK=ON \
cmake --build build --config RelWithDebInfo --target llama-cli llama-server -j32
rsync -avzP build/bin/llama-cli rk3566:~
rsync -avzP build/bin/{llama-cli,llama-server} rk3566:~