구축하려고 해요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_generic
uaccess.h
내 질문은 다음과 같습니다
최신 커널 헤더에 파일 자체를 제공하는 대신 (분명히) 존재하지 않는 파일에 대한 참조가 포함되어 있는 이유는 무엇입니까?
컴파일에 필요한 버전
asm/uaccess.h
과 기타 헤더는 어디서 구할 수 있나요?
답변1
iBCS는 더 이상 사용되지 않으며 다음 용도로 사용되었습니다.긴시간. Linux 내부에는 너무 많은 변화가 있어서 초기 4.x 커널에서도 여전히 컴파일될 가능성이 있습니다. 오늘은 리눅스 아비하지만 2013년부터 없어졌습니다. 아마도 오늘날의 binfmt 모듈 중 하나가 이 작업을 수행할 수 있을 것입니다.