You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用CMake编译含依赖库的独立C++程序用于树莓派2

如何用CMake构建可离线部署的树莓派C++程序

完全可以通过CMake配置实现将依赖库打包进程序或部署包,让无网的树莓派2无需安装依赖就能直接运行你的程序。针对你提到的三类依赖,分别处理如下:

1. 标准库(std)

标准库是系统基础组件,但如果要彻底消除对系统标准库动态版本的依赖,可以在CMake中开启全静态链接:

# 全局静态链接(包括标准库)
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static -pthread")

注意:静态链接标准库可能会导致程序体积增大,部分涉及动态加载的功能(如dlopen)会失效,但对于嵌入式场景的常规程序来说影响不大。

2. nlohmann/json库

nlohmann/json本质是头文件-only库,只要你在编译时将其头文件包含进项目,代码会直接编译进你的可执行程序中,不需要额外打包库文件。如果你的项目是通过CMake管理的,直接用FetchContent拉取源码(有网环境下)或者将头文件复制到项目目录即可:

# 用FetchContent拉取nlohmann/json(有网环境下)
include(FetchContent)
FetchContent_Declare(
  nlohmann_json
  GIT_REPOSITORY https://github.com/nlohmann/json.git
  GIT_TAG v3.11.2 # 指定稳定版本
)
FetchContent_MakeAvailable(nlohmann_json)

# 链接到你的目标程序
target_link_libraries(your_program PRIVATE nlohmann_json::nlohmann_json)

3. libgpiod库(核心问题)

apt安装的libgpiod默认是动态库,要让无网设备无需安装就能运行,有两种可行方案:

方案一:静态链接libgpiod

在有网的树莓派上从源码编译libgpiod的静态库,然后链接到你的程序:

  1. 下载libgpiod源码:
git clone https://git.kernel.org/pub/scm/libs/libgpiod/libgpiod.git
cd libgpiod
git checkout v1.6.3 # 指定兼容树莓派2的版本
  1. 编译静态库:
./autogen.sh
./configure --enable-static --disable-shared # 只生成静态库
make -j4
sudo make install # 安装到系统,或者直接用编译出的.a文件
  1. 在你的CMakeLists.txt中指定链接静态库:
# 找到静态库
find_library(LIBGPIOD_STATIC NAMES libgpiod.a PATHS /usr/local/lib)
# 链接到目标程序
target_link_libraries(your_program PRIVATE ${LIBGPIOD_STATIC})

方案二:打包动态库并设置运行路径

如果不想编译静态库,可以把libgpiod的动态库文件复制到程序同目录,让程序运行时从本地加载:

  1. 在有网的树莓派上找到libgpiod的动态库:
sudo find / -name "libgpiod.so.*"
# 通常路径是/usr/lib/arm-linux-gnueabihf/libgpiod.so.2
  1. 在CMake中设置程序的运行路径(rpath),让程序优先从当前目录找动态库:
target_link_options(your_program PRIVATE "-Wl,-rpath='$ORIGIN'")
  1. 部署时,将可执行程序和libgpiod.so.*文件一起复制到USB,传到目标设备后直接运行即可。

部署注意事项

  • 确保编译用的树莓派和目标树莓派2的系统版本、架构一致(都是ARM32位,同一版本Raspbian),避免兼容性问题。
  • 静态编译后的程序体积会比动态链接大,但无需携带额外库文件;动态库打包的方式体积更小,但需要同时复制库文件。

内容的提问来源于stack exchange,提问作者Moritz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 18:28:01