使用古老的核心在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 規範

相關內容