如何在我的机器上找到特定的内核源代码

如何在我的机器上找到特定的内核源代码

我想signal.c在我的机器上找到内核的源代码,以研究我所拥有的和我所拥有的之间的差异(如果存在)源代码。我尝试跟随发表建议,但没有走得太远。

我想我需要更具体的指示。我正在使用 ubuntu 14.04、x86_64、linux-source-3.13.0 (最后一个是 的输出apt-cache search linux-source)。

答案1

如果您按照说明进行操作,则您已经安装了一个内核源码包,名为linux-source-3.13.0,例如,通过

sudo apt-get install linux-source-3.13.0

或者

sudo apt-get install linux-source

它安装了一个虚拟包即安装了版本化的包作为依赖项。

完成此操作后,您可以找到您要查找的文件(使用包名称):

dpkg -L linux-source-3.13.0 |grep -F signal.c

并获取该包中名为“signal.c”的任何文件的路径名

如果该包实际上是源代码的 tarball,则您必须提取这些文件,例如使用tar.在这种情况下,dpkg -L linux-source只会列出 tarball(并且 grep 不会返回任何内容)。

对于 tarball 的情况,您可以这样做:

tar tvf $(dpkg -L linux-source-3.13.0) |grep -F signal.c

如果它只包含一个文件。但假设你有类似的东西

/usr
/usr/src
/usr/src/linux-patch-3.13-rt.patch.bz2
/usr/src/linux-source-3.13.tar.bz2
/usr/share
/usr/share/doc
/usr/share/doc/linux-source-3.13
/usr/share/doc/linux-source-3.13/copyright
/usr/share/doc/linux-source-3.13/changelog.Debian.gz
/usr/share/doc/linux-source-3.13/README.Debian

那么您要查找的文件将位于“tar.bz2”文件中,所以...

tar tvf $(dpkg -L linux-source-3.13.0|grep -F .tar.bz2) |grep -F signal.c

将显示该 tarball 中“signal.c”的路径名

进一步阅读:

相关内容