linux gcc c 的安装,C语言开发GCC命令报错linux应用之gcc环境的安装_钱建民的博客-程序员秘密

技术标签: linux gcc c 的安装  

使用centos开发C语言程序,GCC编译时报错:bash:gcc:command not found

解决方式,安装gcc环境

我们知道,用yum install gcc可以安装gcc编译环境,关于 GCC 在 CentOS 下通过 yum 安装默认版本号,CentOS 5 是 4.1.2;CentOS 6 是 4.4.7;CentOS 7 是 4.8.3。

很多时候在编译安装软件都需要高版本的 GCC,否则就会报错。

那么如何升级 GCC 的版本呢?

首先要确认升级到的 GCC 版本号。

目前 GCC 的最新版已经到了 5.2,而 CentOS 7 则依然使用其 4.8,所以基于兼容性考虑,我选择升级到 4.8.5。

GCC 官网:https://gcc.gnu.org

下面开始一步一步来编译安装 GCC 4.8.5,需要注意的是,在编译安装 GCC 之前,系统里必须先要通过 yum 安装老版本的 GCC 和依赖库。

如果是在 x86_64 系统下编译的话,还需要安装 libgcc.i686 glibc-devel.i686 才行。

yum install -y gcc texinfo-tex flex zip libgcc.i686 glibc-devel.i686

当然,如果是在 CentOS 5 x86_64 系统下安装,则是如下命令:

yum install -y gcc texinfo-tex flex zip libgcc.i386 glibc-devel.i386

同时需注意,编译安装 GCC 内存不小于 1GB,Swap 不小于 1GB,硬盘最低不小于 10GB,否则极有可能会中途报错退出。

编译安装完后,目录 gcc-4.8.5 将会有 5GB 之多。

1、下载源码

wget ftp://ftp.gnu.org/gnu/gcc/gcc-4.8.5/gcc-4.8.5.tar.gz

2、下载依赖包

编译安装 GCC 需要依赖 mpc,mpfr,gmp包。好在 GCC 源码里自带脚本可以轻松下载依赖包。

tar zxf gcc-4.8.5.tar.gz

cd gcc-4.8.5

./contrib/download_prerequisites

在此脚本里可以看到依赖包的版本号依次是 mpc-0.8.1,mpfr-2.4.2,gmp-4.3.2。

3、编译安装

mkdir gcc-build-4.8.5

cd gcc-build-4.8.5

../configure --prefix=/usr

make && make install

为了避免安装后系统里出现多个版本的 GCC,这里直接将编译安装的目录指定为 /usr,如果不指定 –prefix,则会默认安装到 /usr/local 下。

GCC 4.8.5 光是源代码就有105MB,因此可以预见整个编译过程需要很长时间(差不多 2 个小时左右)。

4、查看版本号

gcc --version

gcc (GCC) 4.8.5

g++ --version

g++ (GCC) 4.8.5

which gcc

/usr/bin/gcc

which g++

/usr/bin/g++

注:本次是在 CentOS 6.7 x86_64 下安装成功。

5、测试程序

cd ~

创建一个 main.cpp 文件,内容如下:

#include using namespace std;

int main() {

cout << "Hello world!" << endl;

return 0;

}

编译 main.cpp,执行如下命令:

g++ main.cpp -o main

执行生成的文件:

./main

输出如下:

Hello world!

写在最后

通过 rpm 命令查询 GCC 包的安装情况:

rpm -qa | grep gcc

输出如下:

gcc-4.4.7-16.el6.x86_64

libgcc-4.4.7-16.el6.x86_64

libgcc-4.4.7-16.el6.i686

gcc-c++-4.4.7-16.el6.x86_64

因此通过以上步骤编译安装 GCC 后,请慎用 yum update 或者通过 yum 来升级 GCC 的命令。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_35249165/article/details/116880173

智能推荐

V$MEMORY_RESIZE_OPS / V$SGA_RESIZE_OPS re-size operations_loryliu的博客-程序员秘密

In V$MEMORY_RESIZE_OPS / V$SGA_RESIZE_OPS we can have three different automatic re-size operations:o DEFERREDo MANUALo IMMEDIATE- Deferred requests are low priority requests coming from ad

Linux内核学习笔记 -29 动手实践 - 中断下半部的代码分析与应用_struct myirq mydev_-西西弗斯的博客-程序员秘密

Linux将中断处理分为上下两部分,上半部分主要处理紧急的,必须马上处理的事情,下半部分处理不那么紧急的事情,linux内核也提供了相应的机制,这里使用理论课中的tasklet机制来进行实验。本节代码是在上节的基础上稍微增加一部分代码即可。首先在中断服务例程,即上半部分中添加tasklet的init函数,即将下半部分函数进行注册。最主要的是要将下半部分处理函数挂载上去。最后调用tasklet_schedule函数进行调度最后用到tasklet_kill,用来注销掉我们的taskletboo

数据集随机+比例分为训练集和测试集:并分别存为文件夹_flir adas dataset__helen_520的博客-程序员秘密

需求:将数据集随机分为训练集和测试集,并将随机分类的图像保存至对应的文件夹。让train+test=原始数据,且带有随机比例。原因:需要将初始化数据集随机分配之后,再将训练集做数据增光,所以不能直接采用txt随机生成路径的方式。原始数据:0,1train:0,1;把原始数据的内容复制到train里,再做分割。test:0,1# coding=utf-8# 随机生成训练集和测试集# 对一个文件夹下的图像生成txt,然后随机选取里面的内容,然后保存到不同的文件夹。# codin.

阿里云服务器ECS 第一篇:FTP文件服务器搭建_Hello_World_QWP的博客-程序员秘密

云服务器ECS 第一篇:FTP文件服务器搭建目前打算将项目部署到云服务器上,并配置系统运行环境,搭建FTP服务器是系统部署的第一步,从这里开始!!!关于FTP:FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”。用于Internet上的控制文件的双向传输。同时,它也是一个应用程序(Application)。基于不同的操

Windows 下单机最大TCP连接数_weixin_34247032的博客-程序员秘密

为什么80%的码农都做不了架构师?&gt;&gt;&gt; ...

python中pandas下dataframe的合并方法小结_python dataframe join on_weixin_40865719的博客-程序员秘密

python中pandas是数据分析的利器,有两种基本的数据形式,Series、DataFrame两种,Series是单列的,DataFrame是平面的二维或者多维的。今天遇到一个问题,如何将两个dataFrame合并:总的来说有两种形式的合并:列名相同的合并,行名相同的合并列名相同的合并:append()函数,假设有如下数据。df = pd.DataFrame(np.random...

随便推点

3.python 获取文件名,去除后缀名_瀑听石的博客-程序员秘密

# @File : getfile.py# @Author: Wang Zhimin# @Date : 2019/10/11string path = "D:/car2.mp4";int pos = path.find_last_of('/');string s(path.substr(pos + 1));string name = s.substr(0, s.rfind("."...

ElasticSearch系列03:elasticsearch.yml(中文配置详解)_TURING.DT的博客-程序员秘密

一、基本配置elasticsearch的config文件夹里面有两个配置文 件:elasticsearch.yml和logging.yml,第一个是es的基本配置文件,第二个是日志配置文件,es也是使用log4j来记录日 志的,所以logging.yml里的设置按普通log4j配置文件来设置就行了。下面主要讲解下elasticsearch.yml这个文件中可配置的东西。cluster.na

MyBatis中传参时为什么要用#{}_为什么使用#}_NmzI怼怼怼的博客-程序员秘密

MyBatis中传参时为什么要用#{}  MyBatis中传参时为什么要用#{},这个问题和MyBatis如何防止SQL注入类似。不过在解释这个问题之前,先解释一下什么是SQL注入,还有些称作注入攻击这个问题。  SQL注入就是SQL对传入参数的拼接。sql语句是String类型的,如果用+来拼接,表示的是直接操作这个String类型的字符串,这是改变了sql的具体内容了,如果用#{id},表示的是操作字改变里面字段的参数值。例如:用+拼接的:"select*fromu...

小鸡拍球_小鸡运动会拍球失分_mengcc666的博客-程序员秘密

【问题描述】“蚂蚁庄园”的小鸡拍球游戏中,有三种可能的得分:5分、8分和10分。现从键盘输入一个整数的得分值,请输出该局游戏可能的得分组合。【输入形式】输入只有一行,包括一个正整数n。【输出形式】输出可能有若干行,每行是一种得分的序列,包括得5分的次数、得8分和得10分的次数,前导符和次数之间用英文冒号分隔,相邻得分次数之间用一个空格分隔。【样例输入】40【样例输出】5:0 8:0 1...

解决colab上传数据集慢的问题_colab上传数据集太慢_iddd的博客-程序员秘密

因为colab是域外的服务器,所以在国内想要上传数据集,速度是非常非常的慢,因此写下自己在解决问题时的一些方法。通过将数据集传到域外的一款软件,然后数据集传到colab我用的方法是先将数据集传到onedrive上面(放心传数据集到onedrive上面是很快的),然后将数据集通过onedrive传到谷歌云盘,然后将谷歌云盘上的数据集传到colab上。听起来很麻烦,其实很简单。第一步:登录到onedrive,然后将数据集传到文档这个文件夹下面,直接拉进去就行,必须传到文档才能进行我下面的操作。第二步

Ubuntu16.04搭建rust开发环境_菜鸟阳阳的博客-程序员秘密

Ubuntu16.04搭建rust开发环境安装vscode进入vscode官网下载Linux下的安装包,使用dpkg命令安装sudo dpkg -i code_1.37.0-1565227985_amd64.deb等待安装完成,搜索vs可以直接找到,为了方便,将其添加到启动器。如果不习惯英文,可以对vscode进行汉化,打开vscode,快捷键Shift + Ctrl + P,输入Configure Display Language进行安装即可,安装完毕需要重启vscode。安装rus

推荐文章

热门文章

相关标签