g++编C++11/C++0x遇到的问题

在看《Cplusplus Concurrency In Action Practical Multithreading》当遇到第一个样品:

#include<iostream>
#include<thread>
void hello()
{
	std::cout<<"hello concurrent world\n";
}
int main()
{
	std::thread t(hello);
	t.join();
}

我安装了g++-4.8版本号编译器,支持C++11。使用命令行g++-4.8 -std=c++11 -lpthread *.cpp编译后,得到的可执行文件在执行时遇到错误:

terminate called after throwing an instance of ‘std::system_error‘

what():  Enable multithreading to use std::thread: Operation not permitted

Aborted (core dumped)

在查了好久才发现问题,是编译器的问题,编译时要加上选项

-Wl,--no-as-needed

这里引用:http://stackoverflow.com/questions/19463602/compiling-multithread-code-with-g

时间: 2024-10-06 09:24:58

g++编C++11/C++0x遇到的问题的相关文章

g++编译C++11/C++0x遇到的问题

在看<Cplusplus Concurrency In Action Practical Multithreading>时遇到第一个例子: #include<iostream> #include<thread> void hello() { std::cout<<"hello concurrent world\n"; } int main() { std::thread t(hello); t.join(); } 我安装了g++-4.8版

gcc g++支持C++11 标准编译及其区别

g++ -g -Wall -std=c++11 main.cpp gcc -g -Wall -std=c11 main.cpp 如果不想每次写这个-std=C++11这个选项该怎么办呢? 方法出处:http://stackoverflow.com/questions/16886591/how-do-i-enable-c11-in-gcc 方法1:写Makefile 方法2:取别名 :alias g++11="g++ -std=c++11" -----------------------

开启g++ 编辑器 c++11特性

以前都是在windows下用vs和cvi写C和C++代码,最近练习Linux下的使用. 编译的时候使用C++11的新特性比如auto 和 iteration特性都报不支持,后来在知乎看到答案需要在编译的时候申明一下使用c++11的特性,如下: g++ -std=c++11 -o target.o source.cpp 需要申明-std=c++11. 另外,我使用的是centos,centos上g++默认版本是4.4.7,需要升级可以参考:centos 上更新g++版本

g++使用C++11编译源文件

g++ HelloWorld.cpp  -std=c++11

gcc/g++以c++11编译

方法一: //在程序头加上预定义编译器命令 #pragma GCC diagnostic error "-std=c++11" //通过#pragma 指示 GCC编译器处理错误的方式以c++11标准; 方法二: //在编译指令中加-std=c++11 g++ test.cpp -o test -std=c++11 //在给一个模板类定义别名,用using时,g++会报错 error: expected unqualified-id before 'using'    //就这个错误就

STL源码剖析---根据最新版本的g++4.9.0(支持C++11)的修订(1)空间配置器

源码剖析采用的G++版本为2.91.57版本,是比较老的版本与最新版本4.9.0有某些方面的差别.现在我针对最新版本做一个分析.我下载了最新的gcc-4.9.0的包作为观察对象: 我们#include <>时的头文件放在:gcc-4.9.0/libstdc++-v3/include/std:例如vector. 真正的实现文件放在:gcc-4.9.0/libstdc++-v3/include/bits:例如:stl_vector,注意前面的stl_. 最后要说的是:技术是不断进步,不断发展变化的

【转】gcc/g++ 如何支持c11 / c++11标准编译

如果用命令 g++ -g -Wall main.cpp  编译以下代码 : 1 2 3 4 5 6 7 8 9 10 11 12 /*     file : main.cpp */ #include <stdio.h> int main() {     int a[5] = { 1, 2, 2, 5, 1 };     for( int i:a ) {         printf( "%d\n", a[i] );     }     return 0; } 那么g++ 就

gcc/g++ 如何支持c11 / c++11标准编译

如果用命令 g++ -g -Wall main.cpp  编译以下代码 : /* file : main.cpp */ #include <stdio.h> int main() { int a[5] = { 1, 2, 2, 5, 1 }; for( int i:a ) { printf( "%d\n", a[i] ); } return 0; } 那么g++ 就会提示以下错误: main.cpp: In function ‘int main()’: main.cpp:5

g++默认支持c++11标准的办法

//第一种,直接包含在源程序文件中,如第一行代码所示 #pragma GCC diagnostic error "-std=c++11" #include <iostream> using namespace std; int main(int argc,char **argv) { cout<<"hello world!"<<endl; auto i=10; cout<<i<<endl; return 0