【发布时间】:2017-12-26 11:22:36
【问题描述】:
我有兴趣为安卓手机开发内核。我在互联网上搜索了有关 android 内核开发的信息,我得到了如何在 linux 机器上构建内核仅意味着如何使用工具来创建自定义内核,但我想知道如何编写代码来制作 android 内核。如何从 c 编程和 ALP 开始。请指导我。
【问题讨论】:
标签: android linux-kernel kernel android-kernel
我有兴趣为安卓手机开发内核。我在互联网上搜索了有关 android 内核开发的信息,我得到了如何在 linux 机器上构建内核仅意味着如何使用工具来创建自定义内核,但我想知道如何编写代码来制作 android 内核。如何从 c 编程和 ALP 开始。请指导我。
【问题讨论】:
标签: android linux-kernel kernel android-kernel
Android 使用 Linux 内核,因此您应该首先熟悉 Linux。
从您的帖子中,我猜您对 C 编程语言了解不多。在开始做任何内核工作之前,您应该能够用 C 编写应用程序,因为如果您不能编写应用程序,您可能不会理解内核。
要开始学习 C,到处都有很多资源,我会推荐 Brian W. Kernighan 的《C 编程语言》一书。和 Denis M. Ritchie(C 的发明者)。
应用程序在所谓的“用户模式”下运行,并且只能访问内核提供给它们的虚拟内存。如果应用程序试图访问不在其虚拟空间中的内存,内核会发送一个中止信号。这可以防止系统崩溃。在内核中情况并非如此,因为内核在“内核模式”下运行,因此当您做错事时可以访问整个地址空间,后果可能从停止系统到擦除永久存储等等。
所以首先学习如何编写应用程序,也许是原生应用程序,通过学习“系统调用”来尝试使用内核提供的功能。为此,我推荐 Mark Mitchel 的书籍“高级 Linux 编程”,它在其网站 http://advancedlinuxprogramming.com/ 上免费托管。你可以在这里找到一些参考https://en.wikibooks.org/wiki/The_Linux_Kernel。
如果您对 C 和 Linux 内核提供的服务感到满意。然后你就可以开始考虑深入内核了。非常受欢迎的书是 Robert Love 的《Linux 内核开发》。虽然我不认为它是最新的它应该涵盖与该主题相关的主要主题,但可能有更多最新的资源。
这是一个漫长的旅程,您应该首先考虑一下,这取决于您想要做什么,您实际上可以在“用户空间”中完成它。
【讨论】: