M100——Onboard SDK编译出错

在尝试编译DJI Onboard SDK时遇到了一个错误,该错误涉及到类型'fd_set'未定义。错误发生在linux_serial_device.hpp和linux_serial_device.cpp文件中。解决方案是向linux_serial_device.hpp中添加#include<sys/select.h>头文件,然后重新编译项目。完成此步骤后,编译错误应得到解决。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

错误信息

In file included from /home/lanx/Downloads/Onboard-SDK-3.4/osdk-core/platform/linux/src/linux_serial_device.cpp:33:
/home/lanx/Downloads/Onboard-SDK-3.4/osdk-core/platform/linux/inc/linux_serial_device.hpp:97:3: error: ‘fd_set’ does not name a type
   97 |   fd_set m_serial_fd_set;
      |   ^~~~~~
/home/lanx/Downloads/Onboard-SDK-3.4/osdk-core/platform/linux/inc/linux_serial_device.hpp: In member function ‘int DJI::OSDK::LinuxSerialDevice::checkBaudRate(uint8_t (&)[2048])’:
/home/lanx/Downloads/Onboard-SDK-3.4/osdk-core/platform/linux/inc/linux_serial_device.hpp:75:3: warning: no return statement in function returning non-void [-Wreturn-type]
   75 |   }
      |   ^
In file included from /usr/include/x86_64-linux-gnu/sys/types.h:179,
                 from /usr/include/stdlib.h:394,
                 from /usr/include/c++/9/cstdlib:75,
                 from /usr/include/c++/9/bits/stl_algo.h:59,
                 from /usr/include/c++/9/algorithm:62,
                 from /home/lanx/Downloads/Onboard-SDK-3.4/osdk-core/platform/linux/src/linux_serial_device.cpp:34:
/home/lanx/Downloads/Onboard-SDK-3.4/osdk-core/platform/linux/src/linux_serial_device.cpp: In member function ‘int DJI::OSDK::LinuxSerialDevice::_serialStart(const char*, int)’:
/home/lanx/Downloads/Onboard-SDK-3.4/osdk-core/platform/linux/src/linux_serial_device.cpp:322:14: error: ‘m_serial_fd_set’ was not declared in this scope; did you mean ‘m_serial_fd’?
  322 |     FD_ZERO(&m_serial_fd_set);
      |              ^~~~~~~~~~~~~~~
/home/lanx/Downloads/Onboard-SDK-3.4/osdk-core/platform/linux/src/linux_serial_device.cpp:323:26: error: ‘m_serial_fd_set’ was not declared in this scope; did you mean ‘m_serial_fd’?
  323 |     FD_SET(m_serial_fd, &m_serial_fd_set);
      |                          ^~~~~~~~~~~~~~~
make[2]: *** [osdk-core/CMakeFiles/djiosdk-core.dir/build.make:362: osdk-core/CMakeFiles/djiosdk-core.dir/platform/linux/src/linux_serial_device.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:259: osdk-core/CMakeFiles/djiosdk-core.dir/all] Error 2
make: *** [Makefile:130: all] Error 2

在这里插入图片描述

解决方法

  1. 在文件Onboard-SDK/osdk-core/platform/linux/inc/linux_serial_device.hpp中添加头文件:
    #include <sys/select.h>
    
  2. 重新编译即可:
    make
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值