x86_64 Linux 커널 헤더 파일 경로

x86_64 Linux 커널 헤더 파일 경로

일부 Linux 커널 헤더 파일을 사용하여 프로그램을 컴파일하고 싶습니다. 그러나 방금 추가하면 -I/usr/src/linux-headers-4.4.0-36/include찾을 수 없습니다 linux/export.h.아치/건물amd64, 그러나 또는 을(를) 찾을 수 없습니다 x86_64. uname -pmi설명하다 x86_64 x86_64 x86_64. 제 경우 에는 arch올바른 디렉토리가 무엇인가요?

시스템은 저장소의 Linux Mint커널 과 함께 제공됩니다 4.4.0.-36.

UPD: 사용하고 싶습니다

#include <linux/platform_device.h>
#include <linux/usb/g_hid.h>

안녕하세요.cpp:

#include <linux/platform_device.h>
#include <linux/usb/g_hid.h>

int main ()
{
    return 0; // nothing
}

그러나 컴파일러는 -I /usr/src/linux-headers-4.4.0-36/include -I /usr/src/linux-headers-4.4.0-36/arch/x86/include재정의가 많아 찾을 수 없다고 말합니다 <generated/timeconst.h>. 에서 찾았습니다 /usr/src/linux-headers-4.4.0-36-generic/include. 하지만 디렉토리의 동일한 경로에 대해서도 -generic일부 오류가 발생합니다 .

답변1

32비트 및 64비트 변형이 포함된 대부분의 아키텍처는 arch동일한 하위 디렉터리에 있습니다. 이는 시간이 지남에 따라 2.6.24 x64_64로 병합되고 , 2.6.25로 병합되고 , 2.6.29 로 병합되었습니다 . 4.7부터 여전히 별도의 아키텍처입니다. 2.6.14로 이동 하고 2.6.27에서 최종적으로 병합되었습니다. 2.6 초반에 병합되었습니다.x86sh64shsparc64sparcarm64ppc64powerpcppcmips64

따라서 amd64 헤더는 arch/x86.

그러나 일반적으로 커널 헤더가 아닌 libc 헤더에 대해 프로그램을 컴파일합니다. (때로는 이름이 같더라도 내용이 다릅니다!) 실제로 커널 헤더 파일이 필요한지 확인하십시오. 이는 커널 버전 간에 변경될 수 있는 불안정한 인터페이스(예: 일부 저수준 디버깅 인터페이스)를 사용하는 프로그램에서만 발생합니다. .

관련 정보