手把手教你在RK3588上部署Deepseek:从编译到排错全指南

电子说

1.4w人已加入

描述

 

 

在嵌入式 AI 开发中,将 Deepseek 大模型部署到 RK3588(瑞芯微高性能 SoC)是实现边缘端智能应用的关键需求。但很多开发者会卡在编译配置、依赖冲突等环节。本文基于实际操作流程,详细讲解直接在 RK3588 板子上编译 Deepseek 可执行程序的完整步骤,包含 CMake 配置、代码上传、常见报错解决,帮你避开所有 

大模型

 

 

 

本文将围绕以下 4 部分展开:

 

 

1.部署前必备准备(硬件 / 软件 工具)

 

 

2.核心配置:CMakeLists.txt 解析与修改

 

 

3.分步操作:代码上传编译报错解决

 

 

4.编译成功验证与总结

 

 

一、部署前准备:确认这些必需品

 

在开始操作前,先确保你的环境满足以下条件,避免后续反复返工:

 

 

类型

 

 

具体要求

 

 

硬件

 

 

RK3588 开发板(已刷入 Linux 系统,如 Linaro-Alip),确保有 SSH 连接或串口访问权限

 

 

软件源码

 

 

Deepseek 部署可执行程序源码包(含main.ccCMakeLists.txtlib库目录)

 

 

依赖库

 

 

内置librkllmrt.soRKLLM 推理库)、libgomp.soOpenMP 支持库)

 

 

编译工具

 

 

板子自带aarch64-linux-gnu-gcc/g++(需确认路径与版本,本文用 GNU 10.2.1

 

 

先通过以下命令验证系统编译工具是否可用(若有输出则正常):

 

 

  •  
  •  
  •  
  •  
  •  
  •  
# 查看GCC版本gcc --version# 查看G++版本g++ --version# 确认工具链路径(本文默认路径为/usr/bin/)which aarch64-linux-gnu-gcc

二、核心配置:修改 CMakeLists.txt

 

CMakeLists.txt是编译的指挥文件,需根据 RK3588 环境调整工具链路径、依赖库引用与安装配置。以下是完整配置代码及关键参数解析:

大模型

 

 

 

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
# 1. 最低CMake版本要求(需≥3.8,避免语法不兼容)cmake_minimum_required(VERSION 3.8)# 2. 项目名称(自定义,建议含硬件标识)project(xsc_deepseek_rkllm_demo)# 3. C++标准配置(固定C++11,适配多数嵌入式环境)set(CMAKE_CXX_STANDARD 11)set(CMAKE_CXX_STANDARD_REQUIRED ON)# 4. 工具链路径配置(关键!需与RK3588实际路径匹配)set(TOOLCHAIN_DIR /usr)  # 工具链根目录set(CMAKE_CXX_COMPILER ${TOOLCHAIN_DIR}/bin/aarch64-linux-gnu-g++)  # C++编译器set(CMAKE_C_COMPILER ${TOOLCHAIN_DIR}/bin/aarch64-linux-gnu-gcc)    # C编译器# 5. 源码目录与头文件路径(指定Deepseek源码根目录,引入RKLLM头文件)set(CMAKE_SOURCE_DIR /data/xsc_deepseek)include_directories(${CMAKE_SOURCE_DIR}/lib/librkllm_api/include/)# 6. 依赖库配置(链接RKLLM推理库与OpenMP库)set(RKLLM_RT_LIB ${CMAKE_SOURCE_DIR}/lib/librkllm_api/librkllmrt.so)  # RKLLM核心库set(GOMP_LIB ${CMAKE_SOURCE_DIR}/lib/libgomp/libgomp.so)              # OpenMP并行库# 7. 生成可执行程序(指定源码文件main.cc,输出程序名xsc_deepseek_demo)add_executable(xsc_deepseek_demo main.cc)# 8. 链接依赖库(将程序与RKLLM、OpenMP库关联,缺一不可)target_link_libraries(xsc_deepseek_demo ${RKLLM_RT_LIB} ${GOMP_LIB})# 9. 安装配置(指定编译产物的输出目录,方便后续调用)set(CMAKE_INSTALL_PREFIX ${CMAKE_SOURCE_DIR}/install/xsc_deepseek_rkllm_demo)install(TARGETS xsc_deepseek_demo DESTINATION ./)  # 安装可执行程序install(DIRECTORY rkllm_model DESTINATION ./)      # 安装模型文件夹

关键提醒:若你的工具链路径、源码目录与本文不同,需同步修改第 456行的路径参数,这是后续编译成功的基础!

 

 

三、分步操作:从代码上传到编译排错

 

这部分是实操核心,我们按上传编译解决报错” 的顺序逐步推进,所有命令均来自实际 RK3588 终端操作。

 

 

步骤 1:将代码上传到 RK3588 的 /data 路径

 

先通过 SSH 或 盘将 Deepseek 源码压缩包(xsc_deepseek.zip)传到 RK3588 /data目录,然后执行解压命令,查看目录结构是否完整:

 

 

  •  
  •  
  •  
  •  
  •  
  •  
  •  
# 进入/data目录cd /data# 解压源码包unzip xsc_deepseek.zip# 进入解压后的目录,查看文件列表cd xsc_deepseekls

正常情况下,ls会输出以下文件 / 目录(确认无缺失):

 

 

  •  
build-linux.sh  CMakeLists.txt  lib  main.cc  rkllm_model

其中:

 

 

lib/:存放librkllmrt.solibgomp.so依赖库

 

 

rkllm_model/Deepseek 模型文件目录

 

 

build-linux.sh:编译脚本

 

 

main.cc:核心业务代码

 

 

步骤 2:执行编译脚本,解决 类常见报错

 

直接运行编译脚本可能会遇到权限、时间戳、依赖库 3 类问题,我们逐个解决:

 

 

报错 1“bash: ./build-linux.sh: 权限不够

 

原因:编译脚本没有可执行权限

 

 

解决命令:给脚本赋最高权限(777 表示读 写 执行权限全开)

 

 

  •  
  •  
  •  
chmod 777 ./build-linux.sh# 重新执行编译脚本./build-linux.sh

报错 2警告:文件 "../../main.cc" 的修改时间在未来 14665332 秒后

 

原因RK3588 系统时间与文件修改时间不匹配(可能是板子断网后时间错乱)

 

 

解决命令:手动同步系统时间(本文示例时间为 2025 年 09 月 02 日 18:28,可根据实际修改)

 

 

  •  
  •  
  •  
  •  
# 设置系统时间(格式:年-月-日 时秒)date -s "20250902 1800"# 重新执行编译脚本./build-linux.sh

报错3“undefined reference to pthread_getaffinity_np@GLIBC_2.32”

 

原因:自带的libgomp.so版本与 RK3588 的 GLIBC2.32 版本)不兼容

 

 

解决步骤

 

 

1.先找到系统中兼容的libgomp.so路径(RK3588 默认在/usr/lib/gcc/aarch64-linux-gnu/10/

 

 

2.替换源码目录中旧的libgomp.so

 

 

具体命令:

 

 

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
# 1. 查找系统中所有libgomp.so路径find .././ -name libgomp.so# 输出会包含:../../usr/lib/gcc/aarch64-linux-gnu/10/libgomp.so(这是兼容版本)# 2. 替换源码lib目录下的旧库(覆盖两个路径,确保编译时引用正确)cp ../../usr/lib/gcc/aarch64-linux-gnu/10/libgomp.so ../../usr/lib/libgomp/libgomp.socp ../../usr/lib/gcc/aarch64-linux-gnu/10/libgomp.so ../../userdata/xsc_deepseek/lib/libgomp/libgomp.so# 3. 再次执行编译脚本,此时无报错./build-linux.sh

步骤 3:确认编译成功

 

当终端输出以下信息时,说明编译与安装完成:

 

 

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
-- Configuring done-- Generating done-- Build files have been written to: /userdata/xsc_deepseek/build/build_linux_aarch6450%Linking CXX executable xsc_deepseek_demo[100%Built target xsc_deepseek_demoInstall the project...-- Install configuration: ""-- Installing/data/xsc_deepseek/install/xsc_deepseek_rkllm_demo/./xsc_deepseek_demo-- Set runtime path of "/data/xsc_deepseek/install/xsc_deepseek_rkllm_demo/./xsc_deepseek_demo" to ""-- Installing/data/xsc_deepseek/install/xsc_deepseek_rkllm_demo/./rkllm_model

可通过以下命令验证产物:

 

 

  •  
  •  
  •  
  •  
  •  
  •  
# 进入安装目录cd /data/xsc_deepseek/install/xsc_deepseek_rkllm_demo# 查看文件(应包含可执行程序和模型目录)ls输出如下即正常:xsc_deepseek_demo  rkllm_model

四、总结:部署关键要点与后续建议

 

本次在 RK3588 上部署 Deepseek 的核心是 本地编译 + 依赖适配,总结 个关键注意点,帮你避免重复踩坑:

 

 

1.CMake 配置是基础:工具链路径、头文件目录、依赖库必须与 RK3588 实际环境匹配,尤其是TOOLCHAIN_DIRRKLLM_RT_LIB的路径不能错;

 

 

2.报错解决有规律:权限问题用chmod,时间问题用date -s,依赖库问题用查找系统兼容库 替换” 的思路;

 

 

3.验证步骤不能少:编译后一定要到install目录确认可执行程序和模型目录是否存在,为后续运行模型做好准备。

 

 

如果后续需要运行 Deepseek 模型,只需在安装目录执行./xsc_deepseek_demo即可(需确保模型配置正确)。若你在操作中遇到其他问题,欢迎在评论区留言讨论!

 

 

大模型  


 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分