从v4l2, Linux vs uapi/ Linux丢失的包括

missing include from v4l2, linux vs uapi/linux

本文关键字:Linux 包括 uapi v4l2 vs      更新时间:2023-10-16

我正在学习通过v4l2-ctl配置视频设备的v4l2 API。很久以前的代码示例已经过时了,有些定义已经不能工作了。有一种新方法可以从内核请求API的所有内容,如v412 -utils所示。我试图将一些代码从v412 -utils到我的代码。然而,我从编译器得到一个错误:

camera.hpp:1038:8: error: 'struct v4l2_ext_controls' has no member named 'which'

ctrl。where = V4L2_CTRL_ID2WHICH(qctrl.id);

:

camera.hpp:1038:43: error: 'V4L2_CTRL_ID2WHICH' was not declared in this scope

ctrl。where = V4L2_CTRL_ID2WHICH(qctrl.id);

字段和定义位于linux源代码树中的一个文件中:/usr/src/linux-4.6.3-gentoo/include/uapi/linux/videodev2.h,但是当我指定:

#include <linux/videodev2.h>

是什么巫术让编译器包括正确的文件?

我一直在研究v412 -utils源代码,但无法弄清楚。

谢谢。

位于/usr/include的文件过期。我已经安装了内核4.3的头文件,并且需要更新版本的头文件。我安装gentoo的解决方案是为sys-kernel/linux-headers添加一个关键字,并安装最新的头文件(4.7)。

结果是UAPI文件在安装到/usr/include时变成了头文件。我可能已经完成了这一点,make headers_install在我的/usr/src/linux目录中,但我不确定这是否比安装linux-headers ebuild更"正确"。我担心冲突。