在Zero上编译非常痛苦,所以使用交叉编译:
安装步骤
更新包列表:
sudo apt update
安装交叉编译工具链:
sudo apt install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu
//gcc-aarch64-linux-gnu:ARM64架构的C编译器。
//g++-aarch64-linux-gnu:ARM64架构的C++编译器。
验证安装:
aarch64-linux-gnu-gcc –version
aarch64-linux-gnu-g++ –version
- 设置交叉编译环境
在项目目录中创建一个 toolchain.cmake 文件,用于指定交叉编译工具链。
创建 toolchain.cmake 文件
cmake
toolchain.cmake
set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR aarch64)
set(CMAKE_C_COMPILER /usr/bin/aarch64-linux-gnu-gcc)
set(CMAKE_CXX_COMPILER /usr/bin/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)
- 交叉编译项目
使用交叉编译工具链编译项目。
步骤 1:生成构建文件
cmake -B build -DCMAKE_TOOLCHAIN_FILE=toolchain.cmake
步骤 2:编译项目
cmake –build build –config Release -j 2
步骤 3:验证编译结果
检查生成的可执行文件是否为ARM64架构:
file build/my_program
输出示例:
build/my_program: ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.7.0, not stripped
- 将程序复制到RK3566
使用 scp 或U盘将编译好的程序复制到RK3566上运行。
使用 scp 复制
scp build/my_program user@rk3566_ip:/path/to/destination
在RK3566上运行
./llama-server -m DeepSeek-R1-Distill-Qwen-1.5B-Q4_K_M.gguf –host 0.0.0.0
使用精简蒸馏模型DeepSeek-R1-Distill-Qwen-1.5B-Q4_K_M.gguf
结果还是非常意料之内的,缓慢无比。0.2 t/s
Leave a Reply