인터럽트 코드를 개발 중입니다. 이것을 포함하면 #include <linux/interrupt.h>
나는 얻는다.
fatal error : linux/interrupt.h no such file or directory
이 오류가 발생하는 이유와 해결 방법은 무엇입니까?
대신 해당 헤더를 포함하면 또 다른 오류가 발생합니다. 마지막으로 linux/compiler.h 오류가 발생합니다.
하지만 이 모든 파일은/usr/src/linux-headers-4.4.0-151/include/linux/
이 문제에 대한 해결책을 찾도록 도와주실 수 있나요?
답변1
A는 #include <linux/interrupt.h>
기본적으로 처럼 보입니다 /usr/include
. 이번에는 을 찾습니다 /usr/include/linux/interrupt.h
. Linux에서는 기본적으로 사용자 공간 응용 프로그램을 개발하고 있기 때문에 파일이 존재하지 않습니다. 시스템 전체 인터럽트에 대한 액세스가 매우 제한되어 있습니다.
의 파일은 /usr/src/linux*/include/linux
커널 헤더입니다. 사용자 공간 애플리케이션에서는 사용할 수 없습니다. 커널 모듈에만 사용할 수 있습니다.
즉, /usr/include/linux
제목을 포함사용자 공간 프로세스가 커널 API를 처리하도록 허용. 대신 /path-to-kernel-source/include/linux
커널에서 사용하는 내부 헤더 파일이 포함되어 있습니다. Linux 커널 개발자는 커널 모듈을 개발할 때 이러한 문제에 가장 자주 직면합니다.
사용자 공간 개발을 수행하는 경우 매우 다른 방식으로 CPU 인터럽트와 상호 작용해야 합니다. 인터럽트 등을 사용하지 않거나 이 작업을 수행하기 위해 커널 모듈을 사용하는 경우 가장 좋습니다.
Linux 커널(커널 모듈) 개발을 수행하는 경우 매우 다른 gcc 플래그를 사용해야 합니다(일반에 /usr/include
액세스할 수 없게 됩니다).