乐趣区

关于c++:Linux配置C11编译环境

配置 yum 源

此处咱们应用 163 的 yum 源,配置如下

首先备份 /etc/yum.repos.d/CentOS-Base.repo

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

下载对应版本 repo 文件, 放入 /etc/yum.repos.d/(操作前请做好相应备份),以下为下载链接

https://mirrors.163.com/.help/CentOS6-Base-163.repo

运行以下命令生成 yum 缓存

yum clean all
yum makecache

<!–more–>

应用 yum 配置 c ++ 编译环境

yum 配置好之后,配置 c ++ 编译环境命令如下

yum -y install gcc gcc-g++

装置实现之后 c ++ 环境即可配置好。

写一个 hello worl 代码如下

#include<iostream>

using namespace std;
int main()
{
    cout<<"Hello World!"<<endl;
    return 0;
}

以上代码保留文件名为 aa.cpp,用 c ++ 编译并执行的操作如下

g++ -o hello aa.cpp
./aa.cpp

源码编译装置 c ++11 编译环境

因为 yum 自带的 gcc 版本过低,并且 c ++11 须要 gcc4.8 以上版本反对,因而须要下载 gcc4.8 以上版本以反对 c ++11

查看本地 gcc 版本

gcc -v

本次版本为gcc version 4.4.7 20120313 (Red Hat 4.4.7-17) (GCC)

获取 gcc4.8.2 版本的 source code

源码默认放在 src 目录下

cd /usr/local/src
wget http://gcc.skazkaforyou.com/releases/gcc-4.8.2/gcc-4.8.2.tar.gz

文件有 100M,国外网站下载速度很慢,请急躁期待(可用国外 vps 下载直达)

下载实现后,放在 /usr/local/src 下

解压缩

tar -zxvf gcc-4.8.2.tar.gz

编译源码并装置

进入 gcc 目录

cd gcc-4.8.2

下载配置装置 gcc4.8.2 的依赖库

./contrib/download_prerequisites

建设编译输入目录

在以后门路下执行即可

mkdir gcc-build-4.8.2

开始 configure

../configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
  • --enable-languages示意你要让你的 gcc 反对那些语言
  • --disable-multilib不生成编译为其余平台可执行代码的穿插编译器
  • --disable-checking生成的编译器在编译过程中不做额定查看

编译

在编译输入目录 gcc-build-4.8.2 间接 make 即可

make

源码 make 过程耗时较长,个别须要半个小时以上。

装置

make install

验证是否降级胜利

应用 which gcc 查看 gcc 装置的为止,应用 gcc -v 查看版本,如果依然没有变,请敞开以后会话从新连贯看是否变成 4.8.2,如果仍未变,须要重启零碎

验证 C ++11 程序是否可用

lambda 表达式是 C ++11 的新个性,以下程序即可验证 c ++11 是否可用

参考:http://en.cppreference.com/w/cpp/container/array

#include <iostream>

using namespace std;

int main()

{int n = [] (int x, int y) {return x + y;}(5, 4);

   cout << n << endl;

}

验证办法

g++ -std=c++11 -o lambda vv.cpp

如果应用 g ++ 不加 -std=c++11 参数,则会报错,报错如下

[root@host-192-168-150-182 tmp]# g++ -o lambda vv.cpp 
vv.cpp: In function‘int main()’:
vv.cpp:9:46: warning: lambda expressions only available with -std=c++11 or -std=gnu++11 [enabled by default]
    int n = [] (int x, int y) {return x + y;}(5, 4);
                                              ^

更新 gcc 动态链接库

源码编译降级装置了 gcc 后,编译程序或运行其它程序时,有时会呈现相似 /usr/lib64/libstdc++.so.6: versionGLIBCXX_3.4.18′ not found 的问题。这是因为降级 gcc 时,生成的动静库没有替换老版本 gcc 的动静库导致的,将 gcc 最新版本的动静库替换零碎中老版本的动静库即可解决。可参考以下链接

http://itbilu.com/linux/management/NymXRUieg.html


记得帮我点赞哦!

精心整顿了计算机各个方向的从入门、进阶、实战的视频课程和电子书,依照目录正当分类,总能找到你须要的学习材料,还在等什么?快去关注下载吧!!!

朝思暮想,必有回响,小伙伴们帮我点个赞吧,非常感谢。

我是职场亮哥,YY 高级软件工程师、四年工作教训,回绝咸鱼争当龙头的斜杠程序员。

听我说,提高多,程序人生一把梭

如果有幸能帮到你,请帮我点个【赞】,给个关注,如果能顺带评论给个激励,将不胜感激。

职场亮哥文章列表:更多文章

自己所有文章、答复都与版权保护平台有单干,著作权归职场亮哥所有,未经受权,转载必究!

退出移动版