v4l2의 드라이버 작성에 대해 article을 따라하고 싶었습니다.v4l2 프로그램을 컴파일 할 때 ioport.h 오류
하지만 media/v4l2-dev.h를 포함 시키면 (VFL_TYPE_GRABBER와 같은 일부 매크로에 액세스하려고하므로) 내 첫 번째 기본 시도가 실패했습니다.
가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’
[...]
출처 :
미디어/V4L2-dev.h이 출력 충돌 리눅스/ioport.h 포함 리눅스/device.h 포함
gcc -I/usr/src/linux/arch/x86/include -I/usr/src/linux/include -o prog prog.c
,691 :
#include <asm/types.h>
#include <linux/videodev2.h>
#include <media/v4l2-dev.h>
int main(int argc, char **argv) {
return 0;
}
나는 컴파일
gcc와 함께 2.6.32-37-generic-pae에서 발생합니다. 4.4.3 glibc 2.10 커널 헤더와 gcc를 비슷한 버전의 gentoo에서 동일하게 시도했습니다.
내가 뭘 잘못하고 있니?
편집 : 정확한 경로를 포함하십시오.
죄송 합니다만, 이것은 평범하게 들릴지 모르겠지만 ... 글자 그대로'gcc -I/path/to/include -o prog prog.c'로 컴파일 했습니까? 아니면'-I' 뒤에 include 경로를 지정 했습니까? –
나는 따옴표에 정확한 경로를 쓰고 싶지 않았다. 나는이 오해를 피하기 위해 앞으로 그것을 할 것이다. 사실, -I는 커널 헤더의 include를 가리 킵니다. – roro
'asm/*. h'는 userspace 프로그램에 직접 포함되지는 않을 것이라고 확신합니다. 그들은 glibc 헤더에 대해'bits/*. h '와 동등한 커널 헤더이며, 다른 헤더 (주로'linux/*. h')에 의해 간접적으로 포함됩니다. 이 API를 cargo-culting하는 것보다는이 API를 사용하는 방법에 대한 설명서를 읽어야합니다. –