在构建 Android 自定义 ROM 的同时构建可加载内核模块

问题描述 投票:0回答:3
  1. Goldfish 内核构建成功。
  2. 成功构建带有预构建 Goldfish 内核的 Android 自定义 ROM。
  3. 将模块源代码(例如Hello-Proc)和Makefile添加到自定义ROM中的一个文件夹中。我可以通过在文件夹中发出“make”来成功地手动构建Hello-Proc.ko

当我构建 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
android linux-kernel makefile
3个回答
0
投票

.ko 是内核模块。它必须在 Linux 内核中构建并加载(在您的例子中是 Goldfish)。您将其放入 AOSP 中,这是不正确的。 AOSP 定义了 Android 堆栈的用户空间及以上。


0
投票

事实上,AOSP 构建配方不包括构建内核。它必须使用提供的工具链单独构建。如果您还没有,请查看本指南 (http://source.android.com/source/building-kernels.html)。

要构建可加载的内核模块,请将代码添加到内核源代码(在上面的链接中找到存储库)。


0
投票

使用 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选项。

© www.soinside.com 2019 - 2024. All rights reserved.