我在一個運行 CentOS6/RHEL6 的計算集群上工作,與大約 100 名其他用戶共享該集群,並由一名 IT 管理員進行監督。
最近,我開始用C++編寫,我的一些程式碼依賴C++11。根據這個網頁gcc
, 4.8.1以上版本 支援C++11 。
不幸的是,計算集群的版本是4.4.7。
不久前,由於不同的原因,我嘗試將gcc
版本 4.8.4 安裝到叢集上我的主目錄下的某個位置。安裝失敗,出現這個錯誤訊息。一些谷歌搜尋讓我相信我應該更新glibc
,所以我嘗試將其安裝到我的主目錄中。那戲劇性地失敗了。
gcc
我的 IT 管理員總結道:“修改叢集上的版本可能不起作用。”在我用更多問題惹惱她之前(因為此時我需要的更新版本一些C 編譯器),我正在眾包這些:
(1) 將gcc
版本 4.8.1+ 安裝到我的使用者帳號是否可行? (在我上次嘗試這樣做之後,有些人說這根本上是一個糟糕的主意。)
(2) 如果(1)的答案是肯定的,這次我該採取什麼預防措施來確保安裝成功?是否需要安裝glibc
到我的帳戶?這可行嗎?
(3) 如果 (1) 的答案是否定的,我的 IT 管理員是否可以在gcc
系統範圍內安裝較新的版本,而不會破壞依賴現有版本的程式碼?
(4) 如果上述方法對於 都不可行gcc
,那麼使用另一個 C 編譯器時情況會改變嗎?
總而言之,我正在尋找具有 C 編譯器知識的人gcc
(或另一個 C 編譯器)來解釋一個人(未經sudo
授權)將如何升級它(如果可能的話)。
答案1
我能夠在 Centos 6.7 上的主目錄中從原始碼建立 GCC 4.8.5。我正在使用 glibc 發行版;我不需要建立 glibc。
警告:我在安裝了發行版 GCC 4.4.x 來源套件的建置依賴項以及libmpc-devel
epel 儲存庫中的套件的系統上執行此操作。如果缺少這些,您可能必須先將它們從原始程式碼建置到主目錄中,並以某種方式更改 gcc 建置過程以從那裡使用它們(如果可能的話)。
建設海灣合作委員會:
取得 GCC 原始碼
curl -LO https://mirrors.kernel.org/gnu/gcc/gcc-4.8.5/gcc-4.8.5.tar.bz2
提煉
tar xf gcc-4.8.5.tar.bz2
在 GCC 來源目錄之外建立一個建置目錄並進入它
mkdir build && cd build
配置。我做了:
../gcc-4.8.4/configure --build=x86_64-linux-gnu --prefix=/home/rakslice/gcc_4_8 \ --enable-checking=release --enable-languages=c,c++,fortran \ --disable-multilib --program-suffix=-4.8
建造。我有 4 個核心,所以我這麼做了:
make -j 5
安裝
make install
現在我可以編譯並執行一些測試程式碼。
/home/rakslice/gcc_4_8/bin/g++-4.8 hello.cpp -o hello ./hello Hello, World!
答案2
關於您的具體問題:
(1) 是的,這是可行的,但可能不那麼有趣。
(2) 不需要,通常可以使用系統glibc。從 gcc 你需要libstdc++
,libgcc
等等。
我的方法是遵循官方說明 很接近並且僅在非常適合您的平台時才使用非官方指令。
實際上,我不會費心使用 4.8,而是直接使用當前版本系列之一(5.2 或 4.9)。
注意:我自己沒有進行過非 root gcc 安裝,但我在將不同版本的 gcc 維護為 gnu 模組的系統上工作。