我正在尝试在 CentOS 5.6 上构建最新版本的 glibc(2.19),但遇到了一些问题
glibc 的文档说我至少需要 linux 内核头文件 2.6.19(即使这不是我正在使用的内核)。我尝试使用以下命令安装头文件
make headers_install INSTALL_HDR_PATH=/root/kernel/headers/
这个命令完成时没有任何错误,但是当我在配置后构建 glibc 时
/root/glibc/glibc-2.19-source/configure --prefix=/root/glibc/glibc-2.19/ --enable-kernel=2.6.18 --with-headers=/root/kernel/headers/include
make -j 12
make 遇到错误
#include <selinux/selinux.h> selinux/selinux.h: no such file or directory
我认为 selinux 标头应该位于 /root/kernel/headers/include 中,因为我在 wikipedia 上读到:
它于 2003 年 8 月 8 日从 2.6 版开始被集成到 Linux 内核主线中
我查看了 /root/kernel/header/include,没有名为 selinux 的文件夹
我的问题是:selinux 标头是否应与其余内核标头一起安装,如果是,我应该如何安装它们?
我使用的是 gcc 4.9.0 和 binutils 2.24。我当前的 glibc 版本是 2.5。我的内核版本是 2.6.18
请注意,我不愿意接受太多的停机时间,也不想更改活动内核版本或完全替换我当前的 glibc。
答案1
您可以轻松找出哪个包提供了该特定文件:
$ yum provides */selinux.h
我身边没有 CentOS 5.9 可以尝试,但最有可能的结果是kernel-devel
和libselinux-devel
包。
您应该始终使用与您正在使用的内核相匹配的内核头。
答案2
编译时systemd
我遇到了错误
In file included from ../src/shared/env-file-label.c:7:
../src/shared/selinux-util.h:13:10: fatal error: selinux/selinux.h: No such file or directory
13 | #include <selinux/selinux.h>
| ^~~~~~~~~~~~~~~~~~~
compilation terminated.
libselinux-dev
适用于 Ubuntu 22 的软件包
$ apt install libselinux-dev