当我构建 ROM 时,需要更改哪个 makefile 以及如何更改来触发构建此模块,以便Hello-Proc.ko 能够自动构建?
注意:Goldfish 内核代码不在 Android 定制 ROM 中,Android 定制 ROM 也不会构建 Goldfish 内核。文件树看起来像这样。
├── android_AOSP
│ ├── device
│ ├── vendor_A
│ ├── product_A
│ │ ├── AndroidBoard.mk
│ │ ├── AndroidProducts.mk
│ │ ├── BoardConfig.mk
│ │ ├── device.mk
│ │ ├── product_a.mk
│ │ ├── system.prop
│ │ └── vendorsetup.sh
│ ├── modules
│ ├── Android.mk
│ ├── hello_proc
│ ├── Android.mk
│ ├── hello_proc.c
│ ├── Kbuild
│ ├── Makefile
├── goldfish
.ko 是内核模块。它必须在 Linux 内核中构建并加载(在您的例子中是 Goldfish)。您将其放入 AOSP 中,这是不正确的。 AOSP 定义了 Android 堆栈的用户空间及以上。
事实上,AOSP 构建配方不包括构建内核。它必须使用提供的工具链单独构建。如果您还没有,请查看本指南 (http://source.android.com/source/building-kernels.html)。
要构建可加载的内核模块,请将代码添加到内核源代码(在上面的链接中找到存储库)。
使用 Clang 编译内核(与自定义 ROM 内联) 1.将 Clang 提交添加到您的内核源代码中 2.确保您的ROM有此提交 3.将以下内容添加到设备树中的 BoardConfig.mk 文件中:TARGET_KERNEL_CLANG_COMPILE := true
测试并验证一切正常:
1.构建内核镜像:m kernel 或 m bootimage 2.打开out/target/product/*/obj/KERNEL_OBJ/include/ generated/compile.h文件,查看LINUX_COMPILER选项。