src 版本 3.* 和 3.*-generic 有什么区别

src 版本 3.* 和 3.*-generic 有什么区别

在我本地的 Linux/Ubuntu 中,我有两个 Linux src 目录

/usr/src/linux-3.16.0
/usr/src/linux-3.16.0-generic

我发现3.16.0中的代码比3.16.0-generic中的代码多得多。我想知道这两个目录为什么不同以及如何不同(它们代表什么?)

答案1

这两个目录由相应的包提供,其中包含内核的头文件。使用dpkg命令查找哪个包提供目录。

$ dpkg -S /usr/src/linux*
linux-headers-X.XX.X-XX: /usr/src/linux-headers-X.XX.X-XX
linux-headers-X.XX.X-XX-generic: /usr/src/linux-headers-X.XX.X-XX-generic
...

第一个目录/usr/src/linux-headers-X.X.XX-XX包含多种架构的头文件,包括x86、amd64、powerpc等,导致文件数量较多,包体积较大。

另一个目录/usr/src/linux-headers-X.X.XX-XX-generic似乎主要包含与针对本地安装的 x86 架构相关的源代码。

对应的包在描述中已经暗示了,例如:

$ apt-cache show linux-headers-3.16.0-25 | grep -A3 Description-en
Description-en: Header files related to Linux kernel version 3.16.0
 This package provides kernel header files for version 3.16.0, for sites
 that want the latest kernel headers. Please read
 /usr/share/doc/linux-lts-utopic-headers-3.16.0-25/debian.README.gz for details

据我所知,这两个目录仅包含源代码而不包含二进制文件。而两者的区别主要在于目标架构源代码。

有关的:内核源代码树包含什么?这与 Linux 内核头文件有关吗?

扩展答案(2015.07.30)

既然都存储了相关的代码,那么两个目录中的代码x86有什么区别? x86– 理查德 2015 年 7 月 29 日 19:11

中包含的大多数目录和文件/usr/src/linux-headers-X.X.XX-XX-generic都是符号链接,它们指向/usr/src/linux-headers-X.X.XX-XX.换句话说,arch/x86在这两个目录中发现的只是实际链接和符号链接的区别,还有一些剩余的asm头文件*-generic

config在这两个包之间,人们可能会注意到另一个主要区别是对应的和generated目录的存在*-generic

根据我的最佳理解,我认为该*-generic目录包含用于配置和编译与体系结构相关的模块所需的头文件x86没有意外更改了linux-headers-x.x.xx-xx.

最重要的是,这两个目录可能是在各自平台上打包和编译包的“干净”方法。虽然,我没有资格澄清这个问题。


回答者备注:我当时天真地写了这个答案 - 不确定什么是正确的或错误的 - 并且中间可能缺少一些解释。因此,这个答案现在是一个社区维基,因此任何具有最低声誉的人都可以改进这篇文章以充分解释其中的差异。

相关内容