关于CM源码自动编译内核的解析.pdfVIP

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
关于CM源码自动编译内核的解析

关于 CM 源码自动编译内核源码的解析 说明:本文是本人从 CyanogenMod 官网翻译而来,旨在帮助 CM 移植的朋友们,更好的学习了 解 CM 源码或 Android 源码移植到新设备的一些相关知识。 目录 1 把 kernel 和 kernel 模块包含在 CM 源代码中,一起编译进 ROM 1.1 为什么 CM 要把内核源码和 Android 源码一起编译? 2 解决方法概述 2.1 把内核源码保存在 CM 源码适当位置中 2.1.1 官方支持的设备 2.1.2 使用正在开发中的没有完成的、非官方的、甚至是其它非集成设备 2.1.3 设备使用其他人共享的内核代码库 3 配置内核编译的设备 4 编译在内核源码外面的内核模块 5 使用预置的内核 6 一个完整的示例 把 kernel 和 kernel 模块包含在 CM 源代码中,一起编译进 ROM 1 为什么 CM 要把 kernel 和 Android 编译在一起? 在 CM9 之前,每个设备代码库依赖于预置的内核,它们和 framework 分开编译,如果任何 时间有一点改动,它都需要设备维护者手动更新编译内核镜像和模块。此外,内核不使用一 致的命名方案,而且很多都不是由 CyanogenMod 的 Gerrit 服务器管理,我们经常使用编译 者编译的内核,而不是 Android 工具链中的内核。这导致很多不一致,让维护者也很难编译。 解决方法概述 到了 CyanogenMod 9,我们嘲笑那些使用预置内核镜像的人,CM9 编译系统已经对这进行了 修改,它需要内核源代码。 把内核源码保存在 CM 源码适当的位置中 最低要求是要内核源代码放在以下目录中: kernel/vendor-name/device-name. 官方支持的设备 对于那些在 CM 代码库的主线上的有自己的内核的设备,这可以被 CM 的完美服务使用。使 用下面的语法,在源代码的 device 目录下创建一个 cm.dependencies 文件(如果此文件不 存在的话): { repository: name-of-repository-in-the-CyanogenMod-github, target_path: kernel/vendorname/devicename, branch: name-of-branch } 它将会自动下载源代码,并保存到对应合适的位置。 使用正在开发中的没有完成的、非官方的、甚至是其它非集成设备 对于在 CM 的 github 中没有内核源码的设备,为了在正确的位置存放源代码, 建议使用 local_manifest.xml ,并保持它和你 github 中的代码库同步。 设备使用其他人共享的内核代码库 如果你的设备使用别人共享的 kernel,默认的源码路径为: kernel/devicename ,若不修改指定源码位置将会发生代码重复的错误,所以 我们要使用 TARGET_KERNEL_SOURCE 来指定当前 kernel 源码的位置,具体可以 在文件 BoardConfig.mk 中修改,如下: TARGET_KERNEL_SOURCE := kernel/vendor-name/unique-shared-source-name 配置内核编译的设备 下载好源码后,配置编译内核的设备就很简单,只需要在文件 BoardConfig.mk 文件中修改 TARGET_KERNEL_CONFIG 变量的值就可以了,把它改为你自己设备对 应的名称(它存在于 arch/arm/configs 中),修改示例: TARGET_KERNEL_CONFIG := cyanogenmod_mydevice_defconfig 这将触发所有内核源码的编译,包括配置文件中指定的内核模块, 任何编译的模块都会在最终的镜像文件的 /system/lib/modules/ 目录下生成 对应的模块文件。 如果你的设备要求 uImage 格式的镜像,那么应该在 BoardConfig.mk 文件中做 如下配置: BOARD_USES_UBOOT := true 编译不在内核源码目录中的内核模块 如果你的设备需要不在内核源码目录中的模块,这也可以通过配置让它自动编 译,CM 代码库直接支持一些硬件

文档评论(0)

l215322 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档