李蓓 發表於 2023-6-19 00:00:00

详解ubuntu 16.04 LTS 降级安装gcc 4.8

<p>
        由于gcc在5.x版本修改了ABI,导致新版本gcc编译的二进制文件放在老的环境下会报错,所以需要安装gcc4.8.5。4.8.5这个版本支持c++11。</p>
<p>
        首先尝试下载gcc-4.8.5的源码编译安装,结果make时报错“libstdc++.so.6: : version `CXXABI_1.3.8' not found”。查了一下,不能用新版gcc来编译老版的gcc源码,(╯‵□′)╯︵┻━┻。</p>
<p>
        其实,在ubuntu上安装老版gcc十分简单,直接用apt-get命令下载即可。</p>
<p>
        <strong>第一步:</strong></p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterbash" id="highlighter_716774">
                        <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>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="bash functions">sudo</code> <code class="bash plain">apt-get </code><code class="bash functions">install</code> <code class="bash plain">gcc-4.8</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        输入密码,同意安装,接下来就自动下载安装4.8.5版本了。</p>
<p>
        <strong>第二步:设置默认的gcc版本</strong></p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterbash" id="highlighter_453792">
                        <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>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="bash plain">gcc --version</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        (可选)查看当前版本,不出意外的话会返回ubuntu16.04自带的5.4.0这个版本号,现在使用gcc命令编译时还是会用新版本。</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterbash" id="highlighter_598236">
                        <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>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="bash functions">ls</code> <code class="bash plain">/usr/bin/gcc</code><code class="bash plain">*</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        (可选)查看已有的gcc版本,确认一下刚才4.8.5有没有装成功。</p>
<p>
         </p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterbash" id="highlighter_66208">
                        <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">sudo</code> <code class="bash plain">update-alternatives --</code><code class="bash functions">install</code> <code class="bash plain">/usr/bin/gcc</code> <code class="bash plain">gcc </code><code class="bash plain">/usr/bin/gcc-4</code><code class="bash plain">.8 </code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="bash plain">100</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        将某个版本加入gcc候选中,最后的数字是优先级,我自己是直接设为100,没任何问题。</p>
<p>
         接着输入:</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterbash" id="highlighter_119944">
                        <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>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="bash functions">sudo</code> <code class="bash plain">update-alternatives --config gcc</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        如果用过此方法配置过多个gcc版本,会看到如下选项:(注:复制于参考文献【2】,这里只是做个说明示范,实际装4.8时不会如下显示)</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterplain" id="highlighter_177544">
                        <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>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="plain plain">选择     路径   优先级  状态</code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="plain plain">------------------------------------------------------------</code>
</div>
                                                                <div class="line number3 index2 alt2">
                                                                        <code class="plain plain">* 0   /usr/bin/gcc-4.4 50  自动模式</code>
</div>
                                                                <div class="line number4 index3 alt1">
                                                                        <code class="plain spaces"> </code><code class="plain plain">1   /usr/bin/gcc-4.4 50  手动模式</code>
</div>
                                                                <div class="line number5 index4 alt2">
                                                                        <code class="plain spaces"> </code><code class="plain plain">2   /usr/bin/gcc-4.5 40  手动模式</code>
</div>
                                                                <div class="line number6 index5 alt1">
                                                                        <code class="plain spaces"> </code><code class="plain plain">3   /usr/bin/gcc-4.6 30  手动模式</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        大多数情况是没有这么配置过,所以不会给选项,命令行会返回“仅有一个可用的gcc版本”(大意)。此时在运行gcc --version查看版本,发现4.8.5已经为默认的gcc版本。</p>
<p>
        然后再按同样方法装上g++,如果只装gcc的话,用cmake配置出来的项目遇到c++代码还是会用之前版本的gcc。</p>
<p>
        大功告成。</p>
<p>
        以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。</p>
<p>
        原文链接:http://www.cnblogs.com/in4ight/p/6626708.html</p>
頁: [1]
查看完整版本: 详解ubuntu 16.04 LTS 降级安装gcc 4.8