簡體   English   中英

編譯v4l2程序時出現ioport.h錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM