【问题标题】:Linux redhat kernel-headersLinux redhat 内核头文件
【发布时间】:2009-07-31 17:50:57
【问题描述】:

我正在尝试在 Linux Redhat 2.6.9-42.ELsmp 上编译一个 c 编程包 (thc-ipv6-0.7),它抱怨找不到“linux/string.h”。

从谷歌,我了解到这是“kernel-headers”包的一部分。

如果我执行“rpm -qa | grep kernel”

它显示安装了“kernel-devel”(我认为我需要),但没有安装“kernel-headers”。

“find / -name string.h”显示 string.h 实际上在系统上,在许多地方,包括“/usr/include”。

我尝试在 make 文件中添加“-I/usr/include”,但得到了同样的错误。

我的问题是,我是否需要安装“kernel-headers”,如果需要,我在哪里可以找到它,以及什么版本?

【问题讨论】:

  • 你试过“yum install kernel-headers”吗?
  • 事实上,我确实尝试过。但是 yum 没有安装,IIRC。

标签: c linux kernel header redhat


【解决方案1】:

通常,您必须安装与您将在其上执行程序的系统运行的内核版本相对应的那些头文件的版本。在你的情况下,你想在本地运行,2.6.9-42。

该消息抱怨“linux/string.h”而不是“string.h”,因此您添加了一个以 linux 作为子目录的目录。

我对 redhat 的了解不够,不知道如何安装它们(可能是一个 rpm 命令)以及它们将安装在哪里(对于 Debian 和衍生产品,你必须使用 -I/usr/src/linux-内核版本/include")。

【讨论】:

  • 关于 string.h 的“linux”部分的好点。来源专门为此。
  • linux/string.h和你其他的string.h完全不同,前者是给内核使用的字符串函数,后者是给标准C库提供的字符串函数。
  • 是的!有效!我确实在名为 /usr/src/kernels/2.6.9-42.EL-smp-i686/include/ 的目录中找到了 /linux/string.h。当我把它放在makefile中时,它编译了。非常感谢!
  • 当然,现在我得到一个运行时错误——无法解析mac地址。我将切换到我的 ubuntu 系统,因为我的同事让它在这方面工作。但是,谢谢你的提示。这是一个恼人的错误。
猜你喜欢
  • 1970-01-01
  • 2021-12-23
  • 2011-08-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-15
  • 2011-09-24
相关资源
最近更新 更多