前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >linux配置c++11编译环境

linux配置c++11编译环境

作者头像
职场亮哥
发布2020-10-10 11:35:27
5.4K0
发布2020-10-10 11:35:27
举报
文章被收录于专栏:职场亮哥职场亮哥

linux配置c++11编译环境

配置yum源

此处我们使用163的yum源,配置如下

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

代码语言:javascript
复制
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缓存

代码语言:javascript
复制
yum clean all
yum makecache

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

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

代码语言:javascript
复制
yum -y install gcc gcc-g++

安装完成之后c++环境即可配置好。

写一个hello worl代码如下

代码语言:javascript
复制
#include<iostream>

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

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

代码语言:javascript
复制
g++ -o hello aa.cpp
./aa.cpp

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

因为yum自带的gcc版本过低,并且c++11需要gcc4.8以上版本支持,因此需要下载gcc4.8以上版本以支持c++11

查看本地gcc版本

代码语言:javascript
复制
g++ -o hello aa.cpp
./aa.cpp

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

获取gcc4.8.2版本的source code

源码默认放在src目录下

代码语言:javascript
复制
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下

解压缩

代码语言:javascript
复制
tar -zxvf gcc-4.8.2.tar.gz

编译源码并安装

进入gcc目录

代码语言:javascript
复制
cd gcc-4.8.2

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

代码语言:javascript
复制
./contrib/download_prerequisites

建立编译输出目录

在当前路径下执行即可

代码语言:javascript
复制
./contrib/download_prerequisites

开始configure

代码语言:javascript
复制
../configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
  • --enable-languages表示你要让你的gcc支持那些语言
  • --disable-multilib不生成编译为其他平台可执行代码的交叉编译器
  • --disable-checking生成的编译器在编译过程中不做额外检查

编译

在编译输出目录gcc-build-4.8.2直接make即可

代码语言:javascript
复制
make

源码make过程耗时较长,一般需要半个小时以上。

安装

代码语言:javascript
复制
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

代码语言:javascript
复制
#include <iostream>

using namespace std;

int main()

{

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

   cout << n << endl;

}

验证方法

代码语言:javascript
复制
g++ -std=c++11 -o lambda vv.cpp

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

代码语言:javascript
复制
[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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016-12-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • linux配置c++11编译环境
    • 配置yum源
      • 使用yum配置c++编译环境
        • 源码编译安装c++11编译环境
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档