Centos 8安装gcc的方法
<h4 id="gcc介绍">GCC介绍</h4><p>GCC是GNU编译器套件,是由GNU开发的编程语言的编译器。GNU编译器套件包括C、C++、Objective-C、Fortran、Java、Ada和Go语言及这些语言的库,使用gcc编译程序时,编译过程可以为4个阶段:预处理(Pre-Processing)、编译(Compiling)、汇编(Assembling)、链接(Linking)</p>
<p>由于 Linux 操作系统的自由开源,在其基础上衍生出了很多不同的Linux操作系统,如CentOS、Ubuntu、Debian等,这些Linux发行版中,大多数都默认装有GCC编译器,但是在CentOS8中并没有安装,这就需要自己来安装了</p>
<p>下面介绍在线安装、离线安装及版本升级方法,安装系统是CentOS 8.3,其它版本可能略有不同</p>
<h4 id="在线安装">在线安装</h4>
<p>在线安装是一种极其简单的“傻瓜式”安装方法,但是其默认根据当前系统版本所对应的gcc进行安装,而非选择最新版gcc进行安装</p>
<ol>
<li>
<p>确认当前系统是否已安装gcc,执行以下命令</p>
<pre><code class="language-shell">rpm -q gcc
#或者输入查看gcc版本的命令
gcc -v
</code></pre>
<img src="http://r.photo.store.qq.com/psc?/V54C2OLx3pQy8a0fgch71esxCP2J9hMe/TmEUgtj9EK6.7V8ajmQrELNZGcFl4xY58qAh6mmcNRPcszDLVC4M0KErqA1ul6JmnxlbtN58lOZF2E8pcrASRxv*joWXxfZSQPjTdrh.eJo!/r">
</li>
<li>
<p>使用命令安装</p>
<pre><code class="language-shell">dnf install gcc gcc-c++ -y
</code></pre>
</li>
<li>
<p>等待安装结束后再次输入查看gcc版本的命令,出现gcc版本信息就说明安装成功啦</p>
<pre><code class="language-shell">rpm -q gcc
#输入查看gcc版本的命令
gcc --verson
gcc -v
g++ -v
</code></pre>
<img src="http://r.photo.store.qq.com/psc?/V54C2OLx3pQy8a0fgch71esxCP2J9hMe/TmEUgtj9EK6.7V8ajmQrEKd6ZJMLS5kkzWlTnj91Uk3genA7fkZciqfJlk1.8lQorEjXM2iDGmQfa3I4urXzl2fBjK3rGxI4qovySyLTEIE!/r">
</li>
</ol>
<h4 id="版本升级">版本升级</h4>
<p>将gcc-8.3升级到gcc10.2,若未安装gcc,不能使用该方法直接安装gcc,没有旧版本的gcc,编译时会失败的,会报错<code>configure: error: no acceptable C compiler found in $PATH</code></p>
<ol>
<li>
<p>下载gcc-10.2的安装包,若下载失败可以通过国内镜像站下载,在华为、阿里、清华等镜像站搜索GNU,选择需要的版本</p>
<pre><code class="language-shell">wget https://gcc.gnu.org/pub/gcc/releases/gcc-10.2.0/gcc-10.2.0.tar.gz
</code></pre>
<img src="http://r.photo.store.qq.com/psc?/V54C2OLx3pQy8a0fgch71esxCP2J9hMe/TmEUgtj9EK6.7V8ajmQrEEfHOAJAFJ47iEAnIQ.46pL8OMjgqf*HyOw2EJHuzGssTspncQm3S3xycaAGhS6bnBz9HIgOOiR1vchaNp8uHY8!/r">
</li>
<li>
<p>解压并进入目录</p>
<pre><code class="language-shell">tar -zxf gcc-10.2.0.tar.gz
cd gcc-10.2.0
</code></pre>
<img src="http://r.photo.store.qq.com/psc?/V54C2OLx3pQy8a0fgch71esxCP2J9hMe/TmEUgtj9EK6.7V8ajmQrEJcyPiGH*YwNdBzcAb.43zfso313*uMstlFrjNgSmHn*WWKowPWELdK8lzznD8p0c8jkEHYgnNke6iLpIvyxnZ0!/r">
</li>
<li>
<p>执行以下命令,下载安装gcc的依赖包,由于网络原因,下载时间可能会有点久,请耐心等待</p>
<pre><code class="language-shell">./contrib/download_prerequisites
</code></pre>
<img src="http://r.photo.store.qq.com/psc?/V54C2OLx3pQy8a0fgch71esxCP2J9hMe/TmEUgtj9EK6.7V8ajmQrEPFwF13jfE*hOeJ9QY7cv.diPRCOgldCvYu7A6i7531N.8tlBxiuAgb4xCAa0wUbye0HzRbt1z3dQYVEKc1HoIw!/r">
</li>
<li>
<p>由于gcc编译器支持多种语言的编译,而实际情况中可能只需要编译 1~2 种编程语言,因此需要对其进行必要的配置。通过执行如下指令,可以配置gcc支持编译C、C++</p>
<pre><code class="language-shell">./configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
</code></pre>
</li>
<li>
<p>使用make命令来编译gcc源程序,若提示命令不存在,先安装make,执行命令<code>dnf install make -y</code>,编译时间会很长,本次安装耗时近2小时,建议选择合适的时间进行编译</p>
<pre><code class="language-shell">make
</code></pre>
</li>
<li>
<p>编译完成后安装gcc</p>
<pre><code class="language-shell">make install
</code></pre>
</li>
<li>
<p>安装完成后重启服务器,然后查看gcc版本</p>
<pre><code class="language-shell"># 查看gcc版本是否变更
gcc --version
gcc -v
g++ -v
</code></pre>
<img src="http://r.photo.store.qq.com/psc?/V54C2OLx3pQy8a0fgch71esxCP2J9hMe/TmEUgtj9EK6.7V8ajmQrEG543mX2vpNGu*OmqTBAo2YoxCszxOReoPx*Ll85U4TIqtejPRFWChBLe.NLEDHfSo34dLrKRyJ*CCZg*ggO4VI!/r">
<p>重启服务器后可以发现gcc成功从8.3.1升级到10.2.0,若服务器未重启版本不会变更,查看还是返回旧版本信息</p>
</li>
</ol>
<h4 id="离线安装">离线安装</h4>
<p>在工作中,有时会在内网进行工作,无法连接外网,不得不采取离线安装方式,本次离线安装也是采用根据系统版本选择对应的gcc进行安装</p>
<ol>
<li>
<p>首先查看系统相关版本信息</p>
<pre><code class="language-shell"># 查看系统版本信息
cat /etc/centos-release
# 查看Linux版本信息
cat /proc/version
# 此命令输出结果包含了系统内核版本、gcc编译器版本和Red Hat版本号
</code></pre>
<img src="http://r.photo.store.qq.com/psc?/V54C2OLx3pQy8a0fgch71esxCP2J9hMe/TmEUgtj9EK6.7V8ajmQrEPI5EMf.to1chhYx7hnQPZsNHlLgtggExGCwZhUWcrOa*lOIh**CaGDM1KwEX6KYenPdKtgv.jBA*VHhmNuhraI!/r">
</li>
<li>
<p>根据上步获得的信息,使用可访问外网的电脑下载相关gcc的rpm包,下载地址:点击此处进入</p>
<img src="http://r.photo.store.qq.com/psc?/V54C2OLx3pQy8a0fgch71esxCP2J9hMe/TmEUgtj9EK6.7V8ajmQrEF5gY4Aq3oKy8RpWHNDp2s5fyReYOmQtn4GYdrRGEvt2A8Z*yVwzV4d25WSyKLMJCHDvTHKurdHJUUEqR8h9.50!/r">
</li>
<li>
<p>进入详情页,页面显示相关描述信息、下载地址、所需依赖等,依赖如下,并非所有依赖都要安装,可以参考别人版本安装的rpm,改下版本信息后进行下载,但是此方式并能保证修改是正确的!另外若不知道安装GCC到底需要哪些依赖的rpm,就直接下个gcc-c++的rpm,看提示需要哪些依赖关系包,然后再下载相关依赖</p>
<img src="http://r.photo.store.qq.com/psc?/V54C2OLx3pQy8a0fgch71esxCP2J9hMe/TmEUgtj9EK6.7V8ajmQrEEcMLQzsblAX1kJImRdpl1HTUTdTgKx0vjcQk2YAd2I3n6DNMn*dLGMcS03NLr9jxnS5ba2jcvC.gdLJlrNrzfE!/r">
</li>
<li>
<p>下载gcc-c++的rpm包,在详情页,访问下载地址即可</p>
<img src="http://r.photo.store.qq.com/psc?/V54C2OLx3pQy8a0fgch71esxCP2J9hMe/TmEUgtj9EK6.7V8ajmQrEM8H1g3eioLSzvLvNpdHecvxTNk.kvzGg.yEn3rHlRCvUPyqm2w9wax0Gld7ql9OPgHK5AwRwComO5WlGI01VD0!/r">
</li>
<li>
<p>将下载的rpm包上传到服务器上,进行安装</p>
<pre><code class="language-shell"># 新建目录,将rpm包统一放到此目录下
mkdir gcc
cd gcc
# 安装rpm包
rpm -ivh gcc-c++-8.3.1-5.1.el8.x86_64.rpm
</code></pre>
<img src="http://r.photo.store.qq.com/psc?/V54C2OLx3pQy8a0fgch71esxCP2J9hMe/TmEUgtj9EK6.7V8ajmQrEFLVR5nujIrHftJA7WlYjztnnx8hgrpnh1xPR5ZWQ.T5gVtlvPOnYIuVCIra9h8Ro6D4orPu1V7snT8eRs0bhG0!/r">
</li>
<li>
<p>根据上一步获得依赖提示,回到网站中进入gcc-c++-8.3.1-5.1.el8.x86_64.rpm详情页,下载依赖后上传到服务器安装</p>
<img src="http://r.photo.store.qq.com/psc?/V54C2OLx3pQy8a0fgch71esxCP2J9hMe/TmEUgtj9EK6.7V8ajmQrEDbqDgULSq.AyrXq339L7LXanOl*L44aiBjORSaTgkpycvWDQC61ht5pSb0QXIsNvHNY*tgRzGWjVq0kDZtKNjI!/r">
<pre><code class="language-shell"># 逐条安装
rpm -ivh libmpc-1.0.2-9.el8.x86_64.rpm
rpm -ivh libstdc++-devel-8.3.1-5.1.el8.x86_64.rpm
rpm -ivh gcc-8.3.1-5.1.el8.x86_64.rpm
# 或者直接合并为一条命令
rpm -ivh gcc-8.3.1-5.1.el8.x86_64.rpm libmpc-1.0.2-9.el8.x86_64.rpm libstdc++-devel-8.3.1-5.1.el8.x86_64.rpm
</code></pre>
<img src="http://r.photo.store.qq.com/psc?/V54C2OLx3pQy8a0fgch71esxCP2J9hMe/TmEUgtj9EK6.7V8ajmQrEDd*Lgzhxm7tJH0aR98dPJ4uLzYlLE4oNvEYkiGOJmTMvYfKEV.iKE1L..hNp6A8QgJss4U59gmEH*cbBONl0SU!/r">
</li>
<li>
<p>同样根据依赖提示,再次回到网站中进入gcc-8.3.1-5.1.el8.x86_64.rpm详情页,下载依赖后上传服务器安装,注意进入相应的rpm包页面下载依赖,否则依赖找不到</p>
<img src="http://r.photo.store.qq.com/psc?/V54C2OLx3pQy8a0fgch71esxCP2J9hMe/TmEUgtj9EK6.7V8ajmQrEDCCsEIop.8SUEzfttEwNhS8Kxu9YMQKOi7cVlUc76Lf24iuNeEbwodweM21UInvbgamQ4KSOM4FiVAf2OI7.dQ!/r">
<pre><code class="language-shell"># 逐条安装
rpm -ivh cpp-8.3.1-5.1.el8.x86_64.rpm
rpm -ivh isl-0.16.1-6.el8.x86_64.rpm
rpm -ivh glibc-devel-2.28-127.el8.x86_64.rpm
# 或者合并为一条命令
rpm -ivh cpp-8.3.1-5.1.el8.x86_64.rpm isl-0.16.1-6.el8.x86_64.rpm glibc-devel-2.28-127.el8.x86_64.rpm
</code></pre>
<img src="http://r.photo.store.qq.com/psc?/V54C2OLx3pQy8a0fgch71esxCP2J9hMe/TmEUgtj9EK6.7V8ajmQrENplMTyuPj5OAJ69CHR0OuSlAYexu8P6J.CkINX0TnQ9vv0yINotEkkez4AuV2i1gslm6XKvk88w4TGC6naMyEE!/r">
</li>
<li>
<p>同样根据依赖提示,回到网站中进入glibc-devel-2.28-127.el8.x86_64.rpm详情页,下载依赖后上传服务器安装</p>
<img src="http://r.photo.store.qq.com/psc?/V54C2OLx3pQy8a0fgch71esxCP2J9hMe/TmEUgtj9EK6.7V8ajmQrEAfjSlcGLMmqrVYjfOQj0kJ023YUtiFddX9n5GmhVkcIwmFYAV.bpspuB0lrfyrzU8xI75O8rxMelH8co6O2AYQ!/r">
<pre><code class="language-shell"># 逐条安装
rpm -ivh glibc-headers-2.28-127.el8.x86_64.rpm
rpm -ivh rpm -ivh libxcrypt-devel-4.1.1-4.el8.x86_64.rpm
# 或者合并为一条命令
rpm -ivh glibc-headers-2.28-127.el8.x86_64.rpm libxcrypt-devel-4.1.1-4.el8.x86_64.rpm
</code></pre>
<img src="http://r.photo.store.qq.com/psc?/V54C2OLx3pQy8a0fgch71esxCP2J9hMe/TmEUgtj9EK6.7V8ajmQrEK3OzZWS30Lo20r1BQ*amMf9C70u98yc7PmN20IOv7eV9nK0xLxYQBgN8e.Om2EQp6h0..dhGjajpF3anVNcVO0!/r">
</li>
<li>
<p>还是根据依赖提示,回到网站中进入glibc-headers-2.28-127.el8.x86_64.rpm详情页,下载依赖后上传服务器安装</p>
<img src="http://r.photo.store.qq.com/psc?/V54C2OLx3pQy8a0fgch71esxCP2J9hMe/TmEUgtj9EK6.7V8ajmQrEMiX3Mjjb245NnTTOcrQAeiI.ZTtY7XfcJNDLMxE4O7GVk.9.WTBa0zKOn9KDrnEgEBwI6bjT0Hjia*PkJFBpfM!/r">
<pre><code class="language-shell"># 安装glibc-headers依赖
rpm -ivh kernel-headers-4.18.0-240.15.1.el8_3.x86_64.rpm
# 安装glibc-headers
rpm -ivh glibc-headers-2.28-127.el8.x86_64.rpm
# 安装libxcrypt-devel
rpm -ivh libxcrypt-devel-4.1.1-4.el8.x86_64.rpm
</code></pre>
</li>
<li>
<p>这里出现了个小状况狂,安装的两个rpm包相互依赖,只能将一方跳过依赖并强行安装了</p>
<pre><code class="language-shell"># 强行安装libxcrypt-devel
rpm -ivh libxcrypt-devel-4.1.1-4.el8.x86_64.rpm --nodeps --force
# 安装cpp、isl、glibc-devel
rpm -ivh cpp-8.3.1-5.1.el8.x86_64.rpm isl-0.16.1-6.el8.x86_64.rpm glibc-devel-2.28-127.el8.x86_64.rpm
</code></pre>
<img src="http://r.photo.store.qq.com/psc?/V54C2OLx3pQy8a0fgch71esxCP2J9hMe/TmEUgtj9EK6.7V8ajmQrEPQ7MTnzKFfctxyWN9y1BG8JuN7uldYxoF9KLIvSD581EoJK3eZDvZbkJyt*BncoLFqKhhMMjK18wOvfAWezczs!/r">
</li>
<li>
<p>总算将所有依赖安装完成,最后再安装gcc和gcc-c++</p>
<pre><code class="language-shell"># 安装gcc
rpm -ivh gcc-8.3.1-5.1.el8.x86_64.rpm
# 安装gcc-c++
rpm -ivh gcc-c++-8.3.1-5.1.el8.x86_64.rpm
</code></pre>
<img src="http://r.photo.store.qq.com/psc?/V54C2OLx3pQy8a0fgch71esxCP2J9hMe/TmEUgtj9EK6.7V8ajmQrECYU3OikTSDXOpFXeFwqVNaTkHwmjPeJ6NAgFOvb9Cc4cPT94tluSVR6HslIBPEESpyZeIedKiRrvSv5.Wwgqo0!/r">
</li>
<li>
<p>验证是否安装成功</p>
<pre><code class="language-shell">#查看gcc版本
gcc --verson
#或者
gcc -v
g++ -v
</code></pre>
<img src="http://r.photo.store.qq.com/psc?/V54C2OLx3pQy8a0fgch71esxCP2J9hMe/TmEUgtj9EK6.7V8ajmQrEK*EzV5J*YGtPPvQA.bzcZKkvw*9qVDCOg3RwkaWcboQEcwUarQ4mnFUvPLlVK5WODOG20xL.RbtZVYfx2kB118!/r">
<p>通过验证gcc安装成功</p>
<p>想要自己解决所需的依赖关系,想到了这种有点繁琐的方式,知道这些所需的依赖关系后按反向顺序安装或者将所有的rpm包都强制安装就能很快完成啦!</p>
<p>本次安装用到了以下10个rpm包</p>
<pre><code class="language-无">kernel-headers-4.18.0-240.15.1.el8_3.x86_64.rpm
glibc-headers-2.28-127.el8.x86_64.rpm
libxcrypt-devel-4.1.1-4.el8.x86_64.rpm
glibc-devel-2.28-127.el8.x86_64.rpm
isl-0.16.1-6.el8.x86_64.rpm
cpp-8.3.1-5.1.el8.x86_64.rpm
libstdc++-devel-8.3.1-5.1.el8.x86_64.rpm
libmpc-1.0.2-9.el8.x86_64.rpm
gcc-8.3.1-5.1.el8.x86_64.rpm
gcc-c++-8.3.1-5.1.el8.x86_64
</code></pre>
<p>当知道并获得所需的依赖包时,两步即可安装完成</p>
<pre><code class="language-shell"># 1.上传rpm包
# 2.忽略依赖强制安装所有rpm包
rpm -ivh *.rpm --nodeps --force
</code></pre>
<img src="http://r.photo.store.qq.com/psc?/V54C2OLx3pQy8a0fgch71esxCP2J9hMe/TmEUgtj9EK6.7V8ajmQrECv6ZUvpcZb0JBv9aQ*l9fNV4eJQ1IIjTm0N7tyDe4gCdiqgf6FQ8LfFEtAMklQuYSS.3VA0KcOgPGUKIYTx.ww!/r">
<p>其实还有一种方式获取gcc依赖,使用在线安装时已经有显示需要哪些rpm包,然后找到这些rpm包下载后就可以安装啦</p>
<img src="http://r.photo.store.qq.com/psc?/V54C2OLx3pQy8a0fgch71esxCP2J9hMe/TmEUgtj9EK6.7V8ajmQrEO9xxwSc1JXbxKsgM06Ad0SM1LLV9QPq*UhYMzU2wPhcOdkiy25DQEYGErBfSuIP00j0oTSQbijUw9OX4whoEGc!/r">
<p>在网上找个相关资源很多都是需要积分付费的,自己通过这种方式也安装成功了,免费提供下gcc-8.3.1及依赖包,下载地址:点击此处,密码:gx09</p>
</li>
</ol><br><br>
来源:https://www.cnblogs.com/dyd168/p/14603495.html
頁:
[1]