소스에서 Linux 커널을 컴파일하려고 합니다(https://github.com/UDOOboard/linux_kernel) 우분투 가상 머신에서.
내가 실행할 때 :
ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- make modules
다음과 같은 경고가 많이 표시됩니다.
WARNING: "do_sync_read" [fs/nfs/nfs.ko] has no CRC!
이 모듈은 아직 구축되지 않았습니다. 이 문제를 어떻게 해결할 수 있나요?
답변1
이 스레드는 다음과 같은 오류 메시지와 관련이 있는 것으로 보입니다.kbuild: 가짜 CRC 경고 없음:
# 2004/08/15 11:54:27+02:00 sam@xxxxxxxxxxxxxxxxx # kbuild: Bogus "has no CRC" in external module builds # # From: Pavel Roskin <proski@xxxxxxx> # The recent fixes for the external module build have fixed the major # breakage, but they left one annoyance unfixed. If CONFIG_MODVERSIONS is # disabled, a warning is printed for every exported symbol that is has no # CRC. For instance, I see this when compiling the standalone Orinoco # driver on Linux 2.6.6-rc3: # # *** Warning: "__orinoco_down" [/usr/local/src/orinoco/spectrum_cs.ko] has # no CRC! # *** Warning: "hermes_struct_init" [/usr/local/src/orinoco/spectrum_cs.ko] # has no CRC! # *** Warning: "free_orinocodev" [/usr/local/src/orinoco/spectrum_cs.ko] has # no CRC! # [further warnings skipped]
이 스레드에서 "CONFIG_MODVERSIONS linux"를 검색하면 다음 제목의 페이지가 표시됩니다.커널 기호 및 CONFIG_MODVERSIONS. 이 페이지에서 발췌:
CONFIG_MODVERSIONS사람들의 삶을 더 편리하게 만들기 위해 개발된 개념입니다. 본질적으로 달성하려는 목적은 모듈이 있는 경우 해당 모듈의 커널 데이터 구조, 유형 또는 기능이 로드되면 로드에 실패한다는 것을 알고 해당 모듈을 모든 커널에 로드하려고 시도할 수 있다는 것입니다. 모듈 목적이 변경되었습니다.
커널이 사용 중이 아닌 경우CONFIG_MODVERSIONS활성화되면 해당 커널 버전용으로 특별히 컴파일된 모듈과 MOVERSIONS를 활성화하지 않고 컴파일된 모듈만 로드할 수 있습니다.
그러나 커널이 다음으로 빌드된 경우CONFIG_MODVERSIONS활성화되면 동일한 커널 버전에 대해 컴파일되고 MOVERSIONS가 꺼진 모듈을 로드할 수 있습니다. 그러나 이것이 중요한 부분입니다. 모듈에서 사용하는 커널 API가 변경되지 않는 한 MDOVERSIONS를 켠 상태로 컴파일된 모든 모듈을 로드할 수도 있습니다.
이 페이지는 다음과 같습니다:
모듈의 기호를 내보내지 않기만 원하는 경우 다음을 사용할 수 있습니다.EXPORT_NO_SYMBOLS매크로.
나는 이 시스템을 사용하여 구축할 것입니다. 왜냐하면 여러분이 이 시스템에서 다른 시스템으로 컴파일된 모듈을 가져갈 계획이 없다고 생각하기 때문입니다.
노트:.config 파일이나 .config 파일에서 이 작업을 수행할 수 있습니다 make menuconfig
.