LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
楼主: lofeng

用最新版linux源码包编译内核时是否也要重新安装下Linux API Headers?

[复制链接]
 楼主| 发表于 2009-6-13 10:12:44 | 显示全部楼层
Post by d00m3d;1997233
引自 http://www.linuxfromscratch.org/ ... apter08/kernel.html

LFS 手册有这麽一段:


即是说,你的 headers 应该跟编译 glibc 时所使用的要一致,因为这样才确保 glibc 能提供的跟你编译软件时被定义的才一致

不一致未必出问题,不出问题的原因是应用的函数未必被采用

所以要替换系统的 headers,首先应该重新编译安装 glibc,也就是重建 toolchain,不过编译安装 glibc 是极高危动作,请慎之!

glibc是GNU C Library,是否也就是通常所说的C运行时库?
在编译这个库时,要用到内核中相关的函数,所以就必须内核头文件,也即Linux API Headers
又因为Linux系统是建立在C语言之上的,所以C运行时库即glibc非常重要而不可随意升级,因此所用的Linux API Headers也不可随意替换?

基于上面所说,系统的Linux API Headers必须跟编译系统的glibc时所用的Linux API Headers版本一致,是否是这样?还请大侠指正
多谢毁灭兄
对于kernel header以及glibc的重要性已有理解
但是是否正如我上面所说的呢?
回复 支持 反对

使用道具 举报

发表于 2009-6-13 10:33:56 | 显示全部楼层
Post by lofeng;1997270
这个有点明白,linux-libc-dev貌似是debian提供的经过其净化的头文件包,而make headers_install安装的是内核中的头文件。
在debian中推荐用linux-libc-dev,但是在安装编译某些软件时,譬如vmware tool时,还是要求linux headers,不知是何故。
而debian中貌似是推荐用linux-libc-dev的,所以我只好先装上Linux headers,以装vmware tool,然后remove linux headers,最后再装上linux-libc-dev,这样不知可妥当?

空口无凭,请给出引用出处。

您需要分清楚 用户空间 和 内核空间。
用户空间进程是不允许直接操作内核空间资源的。
安装 vmware 内核模块,需要运行中内核对应内核头文件,一般位于 /lib/modules/`uname -r`/source/ 下,对应 内核空间。
工具链使用的内核头文件位于 /usr/include,对应 用户空间。
回复 支持 反对

使用道具 举报

发表于 2009-6-13 14:32:05 | 显示全部楼层
Post by lofeng;1997273
多谢毁灭兄
对于kernel header以及glibc的重要性已有理解
但是是否正如我上面所说的呢?


大致是這樣的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-6-16 11:18:55 | 显示全部楼层
深空兄,请看下面的输出,是否能表明“[color="red"]debian中貌似是推荐用linux-libc-dev的?”
debian:~# apt-cache show linux-libc-dev
Package: [color="Red"]linux-libc-dev
Priority: optional
Section: devel
Installed-Size: 3864
[color="red"]Maintainer: Debian Kernel Team <debian-kernel@lists.debian.org>
Architecture: i386
Source: linux-2.6
Version: 2.6.26-15lenny3
[color="red"]Replaces: linux-kernel-headers
Provides: linux-kernel-headers
Conflicts: linux-kernel-headers
Filename: pool/updates/main/l/linux-2.6/linux-libc-dev_2.6.26-15lenny3_i386.deb
Size: 746696
MD5sum: a7f6e45793b33ae4e05b831785fd9f42
SHA1: d1a46af068db95b6d9a238868f14bb6792751b9b
SHA256: fb036100908240b7e165731ccf5890ef5c6f8ba2fb15bdf7aca352e5799d65be
[color="red"]Description: Linux support headers for userspace development
This package provides userspaces headers from the Linux kernel.  These
headers are used by the installed headers for GNU glibc and other system
libraries.
Tag: devel::lang:c, devel::library, implemented-in::c, role::devel-lib
回复 支持 反对

使用道具 举报

发表于 2009-6-16 22:25:01 | 显示全部楼层
以前,安装 debian 时,基本系统默认安装的是实实在在的 linux-kernel-headers。
查了一下自己的 lenny 环境,确实没注意到,不知什么时候改成 linux-libc-dev,并作为 linux-kernel-headers 虚拟包存在。

这不说明 debian "推荐",只是默认安装罢了,不需要工具链的情况可以安全删除。
回复 支持 反对

使用道具 举报

发表于 2009-6-17 09:28:02 | 显示全部楼层
给一个反例:详情记不清楚了,有一次在升级内核时,觉得LFS编译系统时的初始内核与正在升级的新内核版本差太多了,于是自作主张把内核头文件用新内核替换了,结果以后再编译其它软件时就出了一堆的错误。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-6-18 14:14:21 | 显示全部楼层
Post by 聚焦深空;1997276
空口无凭,请给出引用出处。

您需要分清楚 用户空间 和 内核空间。
用户空间进程是不允许直接操作内核空间资源的。
安装 vmware 内核模块,需要运行中内核对应内核头文件,一般位于 /lib/modules/`uname -r`/source/ 下,对应 内核空间。
工具链使用的内核头文件位于 /usr/include,对应 用户空间。

我安装的debian 5.0.1中并没有深空兄所说的/lib/modules/`uname -r`/source/目录,如下所示。
小弟愚笨,深空兄所说的“安装 vmware 内核模块,需要运行中内核对应内核头文件,一般位于 /lib/modules/`uname -r`/source/ 下,对应 内核空间。”不是很明白,还请指教。多谢~~
  1. debian:~# cd /lib/modules/`uname -r`
  2. debian:/lib/modules/2.6.26-2-686# ls -l
  3. 总计 1872
  4. drwxr-xr-x 9 root root   4096 06-08 16:58 kernel
  5. -rw-r--r-- 1 root root 410493 06-08 17:45 modules.alias
  6. -rw-r--r-- 1 root root     69 06-08 17:45 modules.ccwmap
  7. -rw-r--r-- 1 root root 392265 06-08 17:45 modules.dep
  8. -rw-r--r-- 1 root root    813 06-08 17:45 modules.ieee1394map
  9. -rw-r--r-- 1 root root    451 06-08 17:45 modules.inputmap
  10. -rw-r--r-- 1 root root  22763 06-08 17:45 modules.isapnpmap
  11. -rw-r--r-- 1 root root     74 06-08 17:45 modules.ofmap
  12. -rw-r--r-- 1 root root 297851 06-08 17:45 modules.pcimap
  13. -rw-r--r-- 1 root root   1429 06-08 17:45 modules.seriomap
  14. -rw-r--r-- 1 root root 180744 06-08 17:45 modules.symbols
  15. -rw-r--r-- 1 root root 554230 06-08 17:45 modules.usbmap
  16. debian:/lib/modules/2.6.26-2-686# cd kernel/
  17. debian:/lib/modules/2.6.26-2-686/kernel# ls -l
  18. 总计 28
  19. drwxr-xr-x  3 root root 4096 06-08 16:58 arch
  20. drwxr-xr-x  3 root root 4096 06-08 17:45 crypto
  21. drwxr-xr-x 54 root root 4096 06-08 16:58 drivers
  22. drwxr-xr-x 51 root root 4096 06-08 17:45 fs
  23. drwxr-xr-x  6 root root 4096 06-08 17:45 lib
  24. drwxr-xr-x 37 root root 4096 06-08 16:58 net
  25. drwxr-xr-x 11 root root 4096 06-08 17:45 sound
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-6-18 14:16:00 | 显示全部楼层
Post by 聚焦深空;1998557
以前,安装 debian 时,基本系统默认安装的是实实在在的 linux-kernel-headers。
查了一下自己的 lenny 环境,确实没注意到,不知什么时候改成 linux-libc-dev,并作为 linux-kernel-headers 虚拟包存在。

这不说明 debian "推荐",只是默认安装罢了,不需要工具链的情况可以安全删除。
在安装vmware tool时系统已经有了linux-libc-dev,还是提示需要kernel headers,很是郁闷
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-6-18 14:30:39 | 显示全部楼层
看了深空兄在http://www.linuxsir.cn/bbs/thread349110.html中的帖子:
内核头文件是编译工具链一部分,要换,整个都要重编译。
编译不同版本内核的模块使用该内核自带头文件就是,但不能直接用其头文件覆盖系统中的内核头文件,否则出问题没法查清的。
如果真的依赖另一个版本的内核头文件,偶的安装方式会出问题的,事实是没有问题。

对 KMS 的工作方式,不是太清楚,[color="Red"]但一般情况下,内核里的东西对用户空间程序应该是透明的,内核空间 用户空间 交流要通过 设备文件(内核设备驱动)、系统调用(libc作中介)。
需要 读源代码 或 找 KMS 文档资料。

想运行 3D 游戏,出现问题,无法改变分辨率、刷新率,整个被内核接管了,不知少配置什么东西 或 少装什么用户空间工具。


对glibc的作用理解加深了一些:一般情况下,内核里的东西对用户空间程序应该是透明的,内核空间 用户空间 交流要通过 设备文件(内核设备驱动)、[color="Red"]系统调用(libc作中介)。

以下引用出自http://www.gnu.org/software/libc/#Resources
Any Unix-like operating system needs a C library: the library which [color="Red"]defines the ``system calls'' and other basic facilities such as open, malloc, printf, exit...
The GNU C library is used as the C library in the GNU system and most systems with the Linux kernel.

[color="red"]defines the ``system calls'' 是在glibc中定义的么?
系统调用是内核提供给应用程序的接口,应用对底层硬件的操作大部分都是通过调用系统调用来完成的。

glibc不是只是使用系统中的函数的么来实现系统调用的么?这样的话怎么能称之为[color="red"]定义呢?
回复 支持 反对

使用道具 举报

发表于 2009-6-18 21:08:54 | 显示全部楼层
楼主,不客气的说,您现在基础太差,大家解释越多您越困惑。
对您来说,现在最好的方法是找 *nix-like 方面的资料充充电。
喜欢书本,可以到图书馆借,不要用买的,打好基础后十有八九会后悔买书,至少目前大部分中文图书是这样。
喜欢快餐式的,可以快速的把本站精华贴中您感兴趣的部分过一遍。

debian相关的问题是您不够仔细,您用debian方式安装内核时显然没有仔细阅读提示。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表