使用古老的内核在Linux上编译新的boost库

使用古老的内核在Linux上编译新的boost库

uname -r我尝试在内核版本为 2.6.18-92.1.13.el5(来自)和使用 gcc 6.1.0 的 2016 intel c++ 编译器的Linux 系统上编译最新的 boost 库 (1.62.0) 。

新的 intel c++ 编译器和 gcc 安装在我的主目录的子目录中。我正在使用一个旧的 glibc,可能和内核一样古老(ldd --version给出ldd (GNU libc) 2.5)。

我收到线程模块的以下错误:

In file included from libs/log/src/event.cpp(31):
/usr/include/linux/futex.h(96): error: identifier "u32" is undefined
  long do_futex(u32 *uaddr, int op, u32 val, unsigned long timeout,
                ^

这是整个编译中唯一的错误。

我无法在计算机上安装新内核,因为我没有 root 访问权限。

安装最新的 Linux 头文件是个好主意吗?这能让我安装 boost 1.62.0 而不会出现错误吗?

答案1

我在第一个参考文献中发现了以下内容:

CentOS 5.2 附带 Boost 1.33.1

如果您坚持这种黑客方法,您需要访问提升存档版本,然后查找版本 1.33.1。但请注意发布日期:

版本 1.33.1
2006 年 12 月 5 日 12:00 GMT

下载应该通过 yum 安装的版本后,将其构建到您的主目录中。 不要升级您的 GCC 版本。由于系统的年龄,您尝试安装的工具受到过时工具链的年龄限制。

在任何具有包管理器的系统中,包管理器应该永远不会残疾。您应该考虑升级操作系统。请参阅此处接受的答案。在升级内核之前,不应升级头文件,并且在yum恢复之前无法升级内核。

参考

CentOS 5.2 上 Boost (libboost) RPM 的 RPM 规范

相关内容