치명적인 오류: linux/interrupt.h: 해당 파일이나 디렉터리가 없습니다.

치명적인 오류: linux/interrupt.h: 해당 파일이나 디렉터리가 없습니다.

인터럽트 코드를 개발 중입니다. 이것을 포함하면 #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액세스할 수 없게 됩니다).

관련 정보