C++11,(即ISO/IEC 14882:2011),是目前的C++编程语言的最新正式标准。它取代了第二版标准(第一版公开于1998年,第二版于2003年更新,分别通称C++98以及C++03,两者差异很小)。新的标准包含核心语言的新机能,而且扩展C++标准程序库。C++11新标准由C++标准委员会于2011年8月12日公布,并于2011年9月出版。此次标准为C++98发布后13年来第一次重大修正。

像C++这样的编程语言,通过一种演化的的过程来发展其定义。这个过程不可避免地将引发与现有代码的兼容问题,在C++的发展过程中偶尔会发生。不过根据Bjarne Stroustrup(C++的创始人并且是委员会的一员)表示,新的标准将几乎100%兼容于现有标准。关于C++11的新特性和一些版本变更请看:C++11-维基百科

目前最新版本的GCC/G++是4.8,新版本的GCC支持最新的C++11标准,十分值得去使用&学习。 下面让我们在Ubuntu12.04 LTS用上GCC最新版本,去体验C++11新标准带来的东西吧!

首先非源码编译式安装:

ubuntu下的安装

sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install gcc-4.8
sudo apt-get install g++-4.8

centos下

yum install -y gcc-c++

等GCC/G++下载并安装完以后,测试是否安装成功:

gcc-4.8 -v
g++-4.8 -v

如果显示版本号表示安装成功:

安装成功后我们如果要使用gcc-4.8和g++-4.8来编译的话,我们就得把gcc改为gcc-4.8,g++同理,改为g++-4.8来进行编译。

此时使用gcc -v查看默认版本,为4.6版本:

如果你想直接使用gcc-4.8而不改变编译时gcc改为gcc-4.8的话,我们就可以更改一下gcc的软链接:

sudo rm /usr/bin/gcc
sudo ln -s /usr/bin/gcc-4.8 /usr/bin/gcc
sudo rm /usr/bin/g++
sudo ln -s /usr/bin/g++-4.8 /usr/bin/g++

现在我们用gcc -v来测试就能发现变为了4.8了!

既然GCC-4.8使用了最新的C++11标准,但是我们为什么还是提示错误呢?解决方法如下:
在编译的时候添加-std=c++11选项即可正常编译C++11标准的代码!

我们可以写一个简单的例子来测试,这里用的是C++11新标准的范围for(Range for)语句,用来遍历给定序列中的每个元素:

#include<iostream>
#include<cstring>
#include<cctype>
using namespace std;int main()
{string str("some string");// range for 语句for(auto &c : str){c = toupper(c);}cout << str << endl;return 0;
}

上面的程序使用Range for语句遍历一个字符串,并将所有字符全部变为大写,然后输出。其中auto类型也是C++11新标准中的,用来自动获取变量的类型。

好了,接下来进行编译运行:

g++ -o test test.cpp

错误:

  error: #error This file requires compiler and library support for the ISO C++ 2011 standard. This support must be enabled with the -std=c++11 or -std=gnu++11 compiler options.
 #error This file requires compiler and library support \

提示错误:‘c’变量没有类型,范围for循环不允许在C++98标准中使用

这是因为GCC/G++默认的-std(即C++语言标准)不是C++11,在这里默认的是C++98,所以需要显式地开启,即添加-std=c++11选项:

g++ -std=c++11 -o test test.cpp

编译成功!!!运行以后输出some string的大写形式!

linux编译c++11的代码相关推荐

  1. linux 编译c_含有CGO代码的项目如何实现跨平台编译

    目前小菜刀的项目中需要用到SQLite数据库,https://github.com/mattn/go-sqlite3支持database/sql接口,采用Go的标准接口有利于项目后续扩展,因此选择了该 ...

  2. Linux编译gcc 11和binutils

    1. 前言 系统自带的gcc版本太低,闲来无聊手动编译一下新版本的gcc.编译环境为Deepin v20.5,内核为5.15.24,本文所示编译方法同样适用其它Debian/Ubuntu的衍生系统. ...

  3. 一份简单的在 Linux下编译及调试 C 代码的指南

    摘要: 一份简单的在 Linux下编译及调试 C 代码的指南 对于Linux下的C程序员来说,几乎天天都会和Linux打交道.但在很多人的眼中,Linux是一个易用性极差.靠命令驱动的操作系统,根本无 ...

  4. 初试linux编译(ubuntu+vim)+玩转智能蛇

    一.初试linux编译(ubuntu+vim) 步骤: ①下载vmware15+ubuntu桌面版映像 ②安装ubuntu ③下载vim+gcc 在ubuntu终端输入: sudo apt-get i ...

  5. Linux平台下QtCreator集成代码静态分析工具clang-tidy和Clazy

    Linux平台下QtCreator集成代码静态分析工具clang-tidy和Clazy 原文连接: https://blog.csdn.net/wsj18808050/article/details/ ...

  6. linux下运行yolo,deepin(linux)编译安装yolo v4测试效果

    # 背景 五一放假的最后一天我也凑了个热闹,试一下新鲜出炉的yolo v4, 由于没有装CUDA和CUDNN,只试了一下在CPU上的速度和效果,电脑环境及编译依赖如下: * deepin 15.11桌 ...

  7. linux编译安装Nginx1.6.0+MySQL5.6.19+PHP5.5.14

    linux编译安装Nginx1.6.0+MySQL5.6.19+PHP5.5.14的方法对于 我这个小菜菜来讲是非常的复杂的还好有这篇文章,下面一起来看看吧. 一.使用系统镜像文件配置本地yum源 1 ...

  8. GCC如何编译内嵌汇编代码

    内核代码绝大部分使用C  语言编写,只有一小部分使用汇编语言编写,例如与特定体系结构相关的代码和对性能影响很大的代码.GCC提供了内嵌汇编的功能,可以在C代码中直接内嵌汇编语言语句,大大方便了程序设计 ...

  9. 如何实现在Windows上运行Linux程序,附示例代码

    如何实现在Windows上运行Linux程序,附示例代码 微软在去年发布了Bash On Windows, 这项技术允许在Windows上运行Linux程序, 我相信已经有很多文章解释过Bash On ...

最新文章

  1. linux安装的时候网卡配置失败,Linux下安装网卡执行make install失败
  2. Visual Assist X 安装、使用 和 快捷键
  3. BUUCTF crackMe
  4. Perturbed Masking:和参数无关的预训练模型分析方法
  5. kotlin集合操作符——生产操作符
  6. React开发(279):ant design 改变按钮状态判断方式
  7. linux 设备数 of,linux下devicetree中惯用的of函数
  8. jQuery源码解析(5)—— Animation动画
  9. HTML 网页页面切换的各种变换效果
  10. UI设计素材专辑|轻松解决键配色方案
  11. 将 Exchange 2003 移动到新计算机并保持相同的服务器名
  12. mysql tcmalloc jemalloc_tcmalloc jemalloc 和ptmalloc 对比
  13. 3.5!——阶乘的插值(python)
  14. NVMe驱动学习记录-2
  15. 自创RTSP 服务器 用多款客户端软件测试接入可以,唯独VLC接入不了
  16. java题目——月供计算器
  17. overscroll-behavior
  18. dota2自走棋Android怎么更新,dota2自走棋
  19. 工业大数据特征有哪些 大数据工程师来告诉你
  20. Netstat命令使用方法

热门文章

  1. CentOS7 通过 YUM 升级 VIM8
  2. 通过 vSphere WS API 获取 vCenter Datastore Provisioned Space 置备空间
  3. 用 Flask 来写个轻博客 (5) — (M)VC_SQLAlchemy 的 CRUD 详解
  4. Python中range和xrange的区别
  5. Configure NFS Server On AIX 6.1
  6. 关于文件权限管理了解和使用
  7. Mining of Massive Dataset----PageRank的两种问题spider traps和dead ends
  8. 浅谈Android引用计数(2)
  9. 自顶向下的语法分析(修改)
  10. [bat] 使用bat文件保证指定程序运行