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デバイスをランダムに選択しました。まだカーネルをテストしていませんが、正しく構築されています。