Linux

使用 GCC v4.9.2 編譯節點

  • August 25, 2015

我似乎無法在 CentOS 6.6(64 位)GCC v4.9.2 上編譯 Node.js

$ ./configure
Node.js configure error: No acceptable C compiler found!

       Please make sure you have a C compiler installed on your system and/or
       consider adjusting the CC environment variable if you installed
       it in a non-standard prefix.

更多細節:

$ which gcc
/usr/bin/gcc

$ gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/local/gcc/libexec/gcc/x86_64-unknown-linux-gnu/4.9.2/lto-wrapper
Target: x86_64-unknown-linux-gnu
Configured with: ../gcc-current/configure --enable-languages=c,c++,fortran --enable-multilib --prefix=/usr/local/gcc
Thread model: posix
gcc version 4.9.2 (GCC)

$ which python
/usr/bin/python

$ python --version
Python 2.6.6

我試圖設置CC ..

$ CC="/usr/local/gcc/bin/gcc"

$ set | grep CC
CC=/usr/local/gcc/bin/gcc

但它會導致同樣的錯誤。

有任何想法嗎?


編輯 1 - 邁克爾的問題

系統提出的編譯器發生了什麼變化?

我在 中安裝了更新版本的編譯器(v4.9.2)/usr/local/gcc,並刪除了原始編譯器(v4.4.7)並嘗試以這種方式替換它:

yum remove -y gcc gcc-c++ cpp

sudo mv /usr/bin/g++  /usr/bin/g++_old
sudo mv /usr/bin/c++ /usr/bin/c++_old

sudo ln -s -f /usr/local/gcc/bin/gcc  /usr/bin/gcc
sudo ln -s -f /usr/local/gcc/bin/g++  /usr/bin/g++
sudo ln -s -f /usr/local/gcc/bin/c++ /usr/bin/c++
sudo ln -s -f /usr/local/gcc/bin/cpp /usr/bin/cpp
sudo ln -s -f /usr/local/gcc/bin/gfortran /usr/bin/gfortran
sudo ln -s -f /usr/local/gcc/bin/gcov /usr/bin/gcov

sudo cp /usr/local/gcc/lib64/libstdc++.so.6.0.20 /usr/lib64/.
sudo mv /usr/lib64/libstdc++.so.6 /usr/lib64/libstdc++.so.6.bak
sudo ln -s -f /usr/lib64/libstdc++.so.6.0.20 /usr/lib64/libstdc++.so.6

我這樣做是因為我在這個需要最新編譯器的系統上安裝 HHVM 。

該編譯器設置可能適用於 hhvm,但對於其他任何東西都毫無用處。在同一個系統上擁有兩個 gcc 版本是相當困難的。你可以做一些事情,比如使用軟體集合,但我個人不喜歡那些,因為它們不是很容易使用。

無論如何,你應該使用 CentOS 7,因為它不需要你更換編譯器,而且會有更多的東西是最新的。總體而言,基於 C7 的系統幾乎可以解決您的所有問題,並且更具未來性。

引用自:https://serverfault.com/questions/716458