如何将源代码编译到内核中?

如何将源代码编译到内核中?

我想将自定义应用程序代码添加并编译到我的内核中。

我应该如何将我的.c.o文件添加到我的内核“bin”目录中并编译它们?

我创建了一个hello.candhello.o文件,我想将它们添加到我的内核中,以便在内核启动时hello.o运行该文件。我需要编辑一些 makefile 吗?

答案1

我想将这些文件添加到我的内核中,以便当内核启动此 hello.o 文件时执行并运行

您想要实现的目标不应该通过内核版本来实现。在启动时执行程序可以通过更简单的方式来处理,而不需要内核编程经验。你可以:

当 shell 启动时执行它: 写在,或 的/path/to/hello/executable末尾。每次启动 shell(更具体地说,bash)时都会获取这些文件。这也意味着每次打开终端时,您的可执行文件都会运行。/etc/profile~/.profile~/.bashrc

使用init.d系统:编译您的代码并添加初始化脚本初始化系统。您将找到您可能需要的所有信息在本页, 或者这里了解 Ubuntu 的具体信息

这是一个简单的例子初始化脚本对于你的 hello 可执行文件:

#!/bin/sh

### BEGIN INIT INFO
# Provides:          hello
# Default-Start:     1 2 3 4 5
# Short-Description: Prints Hello World somewhere.
# Description: Some more description...
### END INIT INFO

case "$1" in
    start)
        /path/to/hello/executable
        ;;
    stop|restart|force-reload)
        ;;
    *)
        ;;
esac

exit 0

现在您可以使用以下命令执行 hello:

service hello start

假设 init 脚本名为hello,并且可执行。要使其在启动时运行,请使用:

update-rc.d hello defaults

实际上,内核更多地依赖于库而不是可执行文件。您可能还想看看内核模块开发指南,它可以向您介绍内核模块的基础知识。再说一次,这是一个可怕的矫枉过正为了你想做的事。

相关内容