gpt4 book ai didi

在 Linux 中编译内核代码

转载 作者:IT王子 更新时间:2023-10-29 01:12:38 26 4
gpt4 key购买 nike

好的,我正在阅读有关 Linux 内核开发的文章,其中有一些代码片段使用了内核的数据结构和其他内容。假设我想用它们做实验,例如有一个非常简单的片段:

#include <../../linux-2.6.37.1/include/linux/sched.h>
struct task_struct *task;
for_each_process(task) {
printk("%s[%d]\n", task->comm, task->pid);
}

看起来很简单,是吗?那么,我不可能 build 那个东西。我正在使用 NetBeans。 sched.h 是正确的文件,就好像可以通过 CTRL + 单击它一样,将一个带到正确的文件。

我是否需要以某种方式包含我的示例文件并从 Makefile 构建整个内核?我只是希望看到它能够构建并且可能会起作用。如果我需要构建整个内核,我将如何实际测试我的东西?

我一定是在做一些非常愚蠢的事情,因为我对内核开发还很陌生。我有点迷路了。

谢谢大家!

最佳答案

您不需要编译整个内核,但您至少必须创建一个内核模块,这样编译起来要容易得多。你应该看看教程,例如 this ,甚至像 this 这样的完整书.

请记住,并非所有内核代码都可以移动到模块中 - 只有那些使用内核的公共(public)(导出)接口(interface)的代码。内核核心部分(例如 VM 或调度程序)固有的代码可能无法从内核的其余部分访问。

另外请记住,不建议在您的开发机器上尝试内核代码 - a轻微的错误很容易使整个系统崩溃。您应该考虑在单独的虚拟机中试用您的内核代码,例如在 VirtualBox .

一个让事情变得更难的细节:通常你只能在内核中插入一个模块,它是为它构建的。在主机系统上编译的模块可以在测试 VM 上使用,当且仅当内核相同时,即来自相同发行版的相同内核包版本。考虑到您将要升级您的主机发行版,在我看来,在测试系统上构建模块更简单。

因为你需要一个 full development suite for C ,您可能应该安装一种流行的 Linux 发行版。它应该更稳定,您可以访问其用户社区。如果您想减小它的体积,您可以只安装基本系统,而无需 X 服务器或图形应用程序。

顺便说一句,Netbeans 旨在开发用户空间应用程序。您可能可以将其改编为内核代码,但它永远不会像用户空间编程那样适合。事实上,没有一个IDE是真正适合的。内核代码无法从用户空间运行(更不用说使用单独的虚拟机了),这打破了 IDE 自动化的正常编辑->编译->运行->调试工作流程循环。

大多数内核开发人员只使用带有 C 语法高亮功能的增强型编辑器,例如 VimEmacs . Emacs 实际上是一个 IDE(以及更多),但正如我上面提到的,您不能轻易地使用基于 IDE 的工作流程进行内核代码开发。

关于在 Linux 中编译内核代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5063897/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com