Debian 10下Onboard-SDK项目CMakeList.txt编写及make链接报错解决
大疆Onboard-SDK telemetry示例编译undefined reference错误解决方法
问题根因
你遇到的undefined reference报错属于链接阶段符号缺失,核心原因分为两类:一是本地安装的libdjiosdk-core.a版本和当前使用的Onboard-SDK示例源码版本不匹配,二是链接时缺少OSDK依赖的平台抽象层、工具链相关静态库。
解决步骤
- 第一步:清理旧版本SDK残留
删除之前安装的OSDK库文件,避免版本冲突:
sudo rm -rf /usr/local/lib/libdjiosdk* sudo rm -rf /usr/local/include/djiosdk*
- 第二步:重新编译安装匹配版本的OSDK核心库
回到/home/pi/Onboard-SDK根目录,重新编译安装核心库,确保版本和当前使用的示例代码完全一致,报错涉及X5S相关功能,需要开启进阶传感编译参数:
cd /home/pi/Onboard-SDK rm -rf build && mkdir build && cd build cmake .. -DADVANCED_SENSING=ON make -j4 sudo make install
- 第三步:补全CMakeLists.txt的链接依赖
当前配置仅链接了djiosdk-core,缺少OSDK依赖的平台、工具层库,修改target_link_libraries配置段:
# 原配置:target_link_libraries(${PROJECT_NAME} djiosdk-core) # 修改为: target_link_libraries(${PROJECT_NAME} djiosdk-core djiosdk-platform djiosdk-utility pthread)
- 第四步:重新编译示例
清空telemetry目录下的旧编译缓存,重新执行编译流程:
cd /home/pi/Onboard-SDK/sample/platform/telemetry rm -rf build && mkdir build && cd build cmake .. make
额外排查点
- 编译示例时确保
ONBOARDSDK_SOURCE的路径和安装核心库所用的源码路径一致,不要混用本地源码路径和/usr/local/include路径 - 树莓派编译时如果出现内存不足报错,将
make -j4改为make使用单线程编译
内容的提问来源于stack exchange,提问作者user14611286
相关产品推荐
相关产品推荐

