다음 명령이 포함된 빌드 스크립트를 사용하여 커널 모듈을 컴파일하고 있습니다.
make -C /lib/modules/$(uname -r)/build SUBDIRS=$PWD modules
이전에는 작동했지만 이제는 다음 오류로 인해 실패합니다.
make[1]: Entering directory '/usr/src/linux-headers-5.4.0-42-generic'
fs/aufs/Makefile:3: fs/aufs/magic.mk: No such file or directory
make[3]: *** No rule to make target 'fs/aufs/magic.mk'. Stop.
scripts/Makefile.clean:67: recipe for target 'fs/aufs' failed
make[2]: *** [fs/aufs] Error 2
Makefile:1738: recipe for target '_clean_fs' failed
make[1]: *** [_clean_fs] Error 2
make[1]: Leaving directory '/usr/src/linux-headers-5.4.0-42-generic'
Makefile:39: recipe for target 'clean' failed
make: *** [clean] Error 2
다른 출력 없이 빌드가 여기서 중지됩니다. 무슨 일이에요?
답변1
중요한 단서는 컴파일할 수 없는 커널 버전인 5.4.0-42-generic입니다.
매개변수 지원은 SUBDIRS
다음과 같습니다.이 버전에서 삭제됨M
업데이트된 매개변수 및 KBUILD_EXTMOD
환경 변수를 지원합니다 .
이전 버전(이후2018년 11월)는 성공적인 컴파일에도 경고를 인쇄하므로 패키지를 업데이트하는 빈도에 따라 한동안 표시되어야 합니다.
make[1]: Entering directory '/usr/src/linux-headers-5.3.0-40-generic'
Makefile:227: ================= WARNING ================
Makefile:228: 'SUBDIRS' will be removed after Linux 5.3
Makefile:229:
Makefile:230: If you are building an individual subdirectory
Makefile:231: in the kernel tree, you can do like this:
Makefile:232: $ make path/to/dir/you/want/to/build/
Makefile:233: (Do not forget the trailing slash)
Makefile:234:
Makefile:235: If you are building an external module,
Makefile:236: Please use 'M=' or 'KBUILD_EXTMOD' instead
Makefile:237: ==========================================
이러한 경고를 무시하지 마십시오! 거의 항상 영역을 나타냅니다.기술 부채.
사용하려면 빌드를 업데이트해야 합니다.외부 모듈을 구축하는 새로운 방법.