Linux中 CentOS 6.5 手动升级gcc到gcc-6.1.0
<p>从进入码农时代已经有好几年了,一直没有写博文的习惯,用到的很多东西没有记录,到后面就忘了,需要用时,又不停上百度google一下,费时间又费精力,还不一定能找到满意的答案,因此开个博客记录下。(废话不多说了)</p>
<p>
今天在公司服务器上源码安装Nodejs报错 WARNING: C++ compiler too old, need g++ 4.8 or clang++ 3.4 (CXX=g++),直接yum update gcc不能升级到4.8,然后只能手动处理了。</p>
<p>
开始,如果linux安装了wget命令: </p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_785505">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
<div class="line number3 index2 alt2">
3</div>
<div class="line number4 index3 alt1">
4</div>
<div class="line number5 index4 alt2">
5</div>
<div class="line number6 index5 alt1">
6</div>
<div class="line number7 index6 alt2">
7</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash plain">wget http:</code><code class="bash plain">//ftp</code><code class="bash plain">.gnu.org</code><code class="bash plain">/gnu/gcc/gcc-6</code><code class="bash plain">.1.0</code><code class="bash plain">/gcc-6</code><code class="bash plain">.1.0.</code><code class="bash functions">tar</code><code class="bash plain">.gz</code>
</div>
<div class="line number2 index1 alt1">
<code class="bash functions">tar</code> <code class="bash plain">-zvxf gcc-6.1.0.</code><code class="bash functions">tar</code><code class="bash plain">.gz --directory=</code><code class="bash plain">/usr/local/</code>
</div>
<div class="line number3 index2 alt2">
<code class="bash functions">cd</code> <code class="bash plain">/usr/local/gcc-6</code><code class="bash plain">.1.0</code>
</div>
<div class="line number4 index3 alt1">
<code class="bash plain">.</code><code class="bash plain">/contrib/download_prerequisites</code>
</div>
<div class="line number5 index4 alt2">
<code class="bash functions">mkdir</code> <code class="bash plain">build && </code><code class="bash functions">cd</code> <code class="bash plain">build </code>
</div>
<div class="line number6 index5 alt1">
<code class="bash plain">..</code><code class="bash plain">/configure</code> <code class="bash plain">-</code><code class="bash functions">enable</code><code class="bash plain">-checking=release -</code><code class="bash functions">enable</code><code class="bash plain">-languages=c,c++ -disable-multilib </code>
</div>
<div class="line number7 index6 alt2">
<code class="bash functions">make</code> <code class="bash plain">&& </code><code class="bash functions">make</code> <code class="bash functions">install</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
如果是在虚拟机上安装,可能需要3-4个小时,耐心等待吧,少年。。。</p>
<p>
如果如果,如果你的linux很不辛,没有安装wget命令,或者不能访问外网,怎么办???继续往下看:</p>
<p>
先下载好最新的gcc(http://ftp.gnu.org/gnu/gcc/),我用的gcc-6.1.0.tar.gz,通过ftp上传到Linux上,解压: </p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_126209">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash functions">tar</code> <code class="bash plain">-zvxf gcc-6.1.0.</code><code class="bash functions">tar</code><code class="bash plain">.gz --directory=</code><code class="bash plain">/usr/local/</code>
</div>
<div class="line number2 index1 alt1">
<code class="bash functions">cd</code> <code class="bash plain">/usr/local/gcc-6</code><code class="bash plain">.1.0</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
然后用vi打开 ./contrib/download_prerequisites 文件,查看当前你下载的gcc需要哪些依赖包。打开后看到如下内容:</p>
<p>
由此,我们还需要下载 gmp-4.3.2.tar.bz2、isl-0.15.tar.bz2、mpc-0.8.1.tar.gz、mpfr-2.4.2.tar.bz2,注意,依赖包一定要是指定版本的,否则会出问题。下载好依赖包,直接解压到/usr/local/gcc-6.1.0/ 目录,然后设置软链接:</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_630131">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
<div class="line number3 index2 alt2">
3</div>
<div class="line number4 index3 alt1">
4</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash functions">ln</code> <code class="bash plain">-sf gmp-4.3.2 gmp</code>
</div>
<div class="line number2 index1 alt1">
<code class="bash functions">ln</code> <code class="bash plain">-sf isl-0.15 isl</code>
</div>
<div class="line number3 index2 alt2">
<code class="bash functions">ln</code> <code class="bash plain">-sf mpc-0.8.1 mpc</code>
</div>
<div class="line number4 index3 alt1">
<code class="bash functions">ln</code> <code class="bash plain">-sf mpfr-2.4.2 mpfr</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
设置好后,就可以开始安装了:</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_701289">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
<div class="line number3 index2 alt2">
3</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash functions">mkdir</code> <code class="bash plain">build && </code><code class="bash functions">cd</code> <code class="bash plain">build </code>
</div>
<div class="line number2 index1 alt1">
<code class="bash plain">..</code><code class="bash plain">/configure</code> <code class="bash plain">-</code><code class="bash functions">enable</code><code class="bash plain">-checking=release -</code><code class="bash functions">enable</code><code class="bash plain">-languages=c,c++ -disable-multilib </code>
</div>
<div class="line number3 index2 alt2">
<code class="bash functions">make</code> <code class="bash plain">&& </code><code class="bash functions">make</code> <code class="bash functions">install</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
以上所述是小编给大家介绍的Linux中 CentOS 6.5 手动升级gcc到gcc-6.1.0,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对服务器之家网站的支持!</p> 顶一个!辛苦楼主分享经验了~
说真的,源码编译GCC确实是个耗时的大工程,之前我编译过一次,等了好几个小时。不过为了能跑新版Nodejs也是没办法的事。
给后面看到的同学补充几点建议:
[*]编译前建议先跑一下make -j$(nproc),可以多线程编译,能节省不少时间
[*]编译完成后记得把新gcc加入环境变量,可以加到/etc/profile里:
export PATH=/usr/local/gcc-6.1.0/bin:$PATH
[*]如果不想每次手动设置,可以用update-alternatives --install来管理多个gcc版本
另外如果网络条件允许的话,其实也可以试试用DevToolset(Red Hat Developer Toolset),CentOS官方有提供新版GCC的rpm包,安装起来会省事很多。
总之感谢楼主的记录,确实很有帮助!现在写博客的人不多了,支持一下!👍
頁:
[1]