Linux-Kernel
使用古老核心在 linux 上編譯新的 boost 庫
我嘗試在核心版本為 2.6.18-92.1.13.el5(來自
uname -r
)的 Linux 系統上編譯最新的 boost 庫(1.62.0),以及使用 gcc 6.1.0 的 2016 intel c++ 編譯器。新的 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 而不會出現錯誤?
我在第一個參考文獻中發現了以下內容:
CentOS 5.2 附帶 Boost 1.33.1
如果您堅持使用這種駭人聽聞的方法,您需要訪問Boost Archived Versions並查找 1.33.1 版本。但請注意發布日期:
版本 1.33.1
格林威治標準時間 2006 年 12 月 5 日 12:00
下載應該通過 yum 安裝的版本後,在您的主目錄中建構它。 不要升級您的 GCC 版本。由於系統的使用年限,您嘗試安裝的工具受到過時工具鏈使用年限的限制。
在任何具有包管理器的系統中,包管理器都不應被禁用。您應該考慮升級作業系統。請參閱此處接受的答案。在升級核心之前,您不應該升級標頭檔,並且在
yum
恢復之前不能升級核心。參考