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


10

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

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

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

Answers:


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所以两个目录中的代码btwn有什么区别?–理查德(Richard)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对应文件中。

在这两个软件包之间,可能会注意到另一个主要区别是在副本中存在configgenerated目录*-generic

以我的最佳理解,我认为该*-generic目录包含用于配置和编译与x86架构相关的模块的必要头文件,而不会意外更改的源目录linux-headers-x.x.xx-xx

最重要的是,这两个目录可能是在相应平台上打包和编译程序包的“干净”方法。虽然,我无法澄清这个问题。


答题者的注释:当时我天真地写了这个答案-不确定是对还是错-并且在这之间可能缺少一些解释。因此,此答案现在是社区Wiki,以便信誉最低的任何人都可以改善此帖子,以充分说明差异。


由于两者都存储了x86相关代码,x86所以两个目录中的代码btwn有什么区别?
理查德(Richard)

@Richard我已尽我所能,尽可能简单地更新了以上答案。我的回答可能被认为是幼稚的,因此您可能希望从其他人那里寻求更好的答案。
clearkimura
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.