Ubuntuの新規インストールで、PC用のNvidiaドライバーをコンパイルするために使用した他のパッケージの中で、build-essentialパッケージをインストールしました。つまり、カーネルとモジュールのコンパイルは PC 上で機能します。
同じ PC で、gcc 4.4.3 に基づく Google NDK ツールチェーンを使用して、Android Linux カーネルをクロスコンパイルしようとしました。
コンパイルはスムーズに進みますが、最終的には次の出力が得られます。
CHK include/linux/version.h
CHK include/generated/utsrelease.h
make[1]: `include/generated/mach-types.h' is up to date.
CALL scripts/checksyscalls.sh
CHK include/generated/compile.h
Building modules, stage 2.
MODPOST 0 modules
「make menuconfig」を呼び出してから「make」を実行する前に、「make prepare」を実行しました。
ビルド サーバー上の同じツールチェーンは、git リポジトリから複製された同じファイルで動作することに注意してください。要するに、同じカーネル ソース、同じツールチェーンがサーバー上でモジュールをビルドし、私の PC ではモジュールをビルドしません。
.config では「ロード可能なモジュールのサポート」が有効になっています。
$cat modules.order
kernel/drivers/scsi/scsi_wait_scan.ko
kernel/drivers/net/wireless/bcmdhd/dhd.ko
kernel/drivers/net/wireless/btlock/btlock.ko
kernel/drivers/net/tun.ko
Makefile には正しい obj-m と obj-$ が設定されています。これは、1 台の PC で動作することからも明らかです。
PC で Android カーネル用のモジュールをコンパイルできない理由について、いくつかの洞察を得ることができてうれしく思います。