我想关注这篇关于 v4l2 驱动程序编写的文章。
但是当我包含 media/v4l2-dev.h 时,我的第一次基本尝试失败了(因为我想访问像 VFL_TYPE_GRABBER 这样的宏)。
media/v4l2-dev.h 包括 linux/device.h ,其中包括 linux/ioport.h 与此输出崩溃:
In file included from /usr/src/linux/include/linux/device.h:16,
from /usr/src/linux/include/media/v4l2-dev.h:14,
from driv.c:11:
/usr/src/linux/include/linux/ioport.h:19: error: expected specifier-qualifier-list before ‘resource_size_t’
/usr/src/linux/include/linux/ioport.h:116: error: expected declaration specifiers or ‘...’ before ‘resource_size_t’
/usr/src/linux/include/linux/ioport.h:116: error: expected declaration specifiers or ‘...’ before ‘resource_size_t’
/usr/src/linux/include/linux/ioport.h:121: error: expected declaration specifiers or ‘...’ before ‘resource_size_t’
[...]
来源 :
#include <asm/types.h>
#include <linux/videodev2.h>
#include <media/v4l2-dev.h>
int main(int argc, char **argv) {
return 0;
}
我编译:
gcc -I/usr/src/linux/arch/x86/include -I/usr/src/linux/include -o prog prog.c
它发生在 2.6.32-37-generic-pae 和 gcc 4.4.3 glibc 2.10 我在 gentoo 上用内核头文件和 gcc 的近似等效版本进行了同样的尝试。
我究竟做错了什么 ?
编辑:指出确切的包含路径。