Linux 커널 헤더 파일에 존재하지 않는 헤더 파일에 대한 참조가 포함되어 있는 이유는 무엇입니까?

Linux 커널 헤더 파일에 존재하지 않는 헤더 파일에 대한 참조가 포함되어 있는 이유는 무엇입니까?

구축하려고 해요IBCS(출처는 여기) 우분투 15.10(리눅스 4.2.35).

이 모듈은 문서 에서 더 이상 존재하지 않는 옵션을 CONFIG.i386제공했기 때문에 분명히 매우 오래된 것이지만, 변경하면 잘 작동하는 것 같았습니다.gcc-m486-march=native

파일에는 다음 내용이 emulate.c포함되어 있습니다 .#includes

#include <linux/config.h>
#include <linux/module.h>
#include <linux/version.h>
#include <asm/uaccess.h>

내 시스템에서는 linux/version.h. 그러나 다음은 작동하는 것 같습니다.

#include "/usr/include/valgrind/config.h"
#include "/usr/include/sepol/module.h"
#include <linux/version.h>
#include </usr/src/linux-headers-4.2.0-35/include/linux/uaccess.h>

(물론 YMMV가 없다면 말이죠 sepol.)

이것은 작동합니다. 단 /usr/src/linux-headers-4.2.0-35/include/linux/uaccess.h, 그 위에는 다음이 있습니다.

#include <asm/uaccess.h>

발견되지 않았습니다.

or 폴더가 없는 것 같습니다 asm. 저도 하나 갖고 있는데 없어요./usr/include/usr/include/linux/usr/include/asm_genericuaccess.h

내 질문은 다음과 같습니다

  1. 최신 커널 헤더에 파일 자체를 제공하는 대신 (분명히) 존재하지 않는 파일에 대한 참조가 포함되어 있는 이유는 무엇입니까?

  2. 컴파일에 필요한 버전 asm/uaccess.h과 기타 헤더는 어디서 구할 수 있나요?

답변1

iBCS는 더 이상 사용되지 않으며 다음 용도로 사용되었습니다.시간. Linux 내부에는 너무 많은 변화가 있어서 초기 4.x 커널에서도 여전히 컴파일될 가능성이 있습니다. 오늘은 리눅스 아비하지만 2013년부터 없어졌습니다. 아마도 오늘날의 binfmt 모듈 중 하나가 이 작업을 수행할 수 있을 것입니다.

관련 정보