在全新的 Ubuntu 安装中,我安装了 build-essential 包,以及其他用于为我的 PC 编译 Nvidia 驱动程序的包。这意味着内核和模块编译在 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 repo 克隆的相同文件。简而言之,相同的内核源代码,相同的工具链,在服务器上构建模块,不在我的 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-$ 设置,这也很明显,因为它可以在一台 PC 上运行。
我很高兴了解为什么我的 PC 无法为我的 Android 内核编译模块。