Linux PC에서 Linux 2.6.38 커널을 컴파일하려고 하면 다음과 같은 결과가 나타납니다.
$ make defconfig
$ make
나는 얻다:
ubuntu/ndiswrapper/iw_ndis.c:1966:2: error: unknown field ‘num_private’ specified in initializer
ubuntu/ndiswrapper/iw_ndis.c:1966:2: warning: initialization makes pointer from integer without a cast
ubuntu/ndiswrapper/iw_ndis.c:1967:2: error: unknown field ‘num_private_args’ specified in initializer
ubuntu/ndiswrapper/iw_ndis.c:1967:2: warning: excess elements in struct initializer
ubuntu/ndiswrapper/iw_ndis.c:1967:2: warning: (near initialization for ‘ndis_handler_def’)
ubuntu/ndiswrapper/iw_ndis.c:1970:2: error: unknown field ‘private’ specified in initializer
ubuntu/ndiswrapper/iw_ndis.c:1970:2: warning: initialization makes integer from pointer without a cast
ubuntu/ndiswrapper/iw_ndis.c:1970:2: error: initializer element is not computable at load time
ubuntu/ndiswrapper/iw_ndis.c:1970:2: error: (near initialization for ‘ndis_handler_def.num_standard’)
ubuntu/ndiswrapper/iw_ndis.c:1971:2: error: unknown field ‘private_args’ specified in initializer
ubuntu/ndiswrapper/iw_ndis.c:1971:26: warning: initialization from incompatible pointer type
make[2]: *** [ubuntu/ndiswrapper/iw_ndis.o] Error 1
make[1]: *** [ubuntu/ndiswrapper] Error 2
make: *** [ubuntu] Error 2
이 문제를 해결하는 방법과 기본 구성에서 이런 일이 발생하는 이유에 대한 아이디어가 있습니까?
답변1
오늘 Oneiric 호스트에서 커널 소스를 가져와서 빌드하려고 할 때 동일한 오류가 발생했습니다.
근본 원인을 정확히 찾아내기 위해 소스 파일을 볼 수 있지만 추적을 위해 WEXT_PRIV
구성 변수가 설정되지 않았으므로 이러한 정의가 포함된 포함 파일은 포함되지 않습니다.
이 코드를 추가하는 Ubuntu 커널 패치는 완벽하지 않습니다. 내 해결 방법은 이 구성 항목이 선택되도록 하는 무선 장치를 목록에서 찾는 것이었습니다. 드라이버를 사용하지 않을 것이기 때문에 장치가 무엇인지는 상관없지만, 파일 CONFIG_WEXT_PRIV
에 설정해 주어야 합니다 .config
.
사용 가능한 선택 항목 중에서 Cisco/Aironet 장치를 무작위로 선택했습니다. 아직 커널을 테스트하지는 않았지만 올바르게 빌드됩니다.