[英]ioport.h errors when compiling v4l2 program
我想关注这篇有关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
它发生在使用gcc 4.4.3 glibc 2.10的2.6.32-37-generic-pae上。
我究竟做错了什么 ?
编辑:指示确切的包含路径。
如果要进行驱动程序开发,则最好使用提供的框架来进行。 我建议从现有的驱动程序构建项目(例如,那个 )开始,通常是一个Makefile,就像这样简单:
KERNEL_VERSION := `uname -r`
KERNEL_DIR := /lib/modules/$(KERNEL_VERSION)/build
PWD := $(shell pwd)
obj-m := mymodule.o
all: mymodule
mymodule:
@echo "Building my driver..."
$(MAKE) -C $(KERNEL_DIR) M=$(PWD) modules
install:
$(MAKE) -C $(KERNEL_DIR) M=$(PWD) modules_install
depmod -ae
clean:
rm -f *~
rm -f Module.symvers Module.markers modules.order
$(MAKE) -C $(KERNEL_DIR) M=$(PWD) clean
而不是尝试猜测其中包含您需要的路径。
此外,您可能不应该在需要头文件之前就添加它们。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.