1. 程式人生 > >#gcc4.7.2編譯以支援c++11標準,解決not a member問題

#gcc4.7.2編譯以支援c++11標準,解決not a member問題

使用g++4.7.2熟悉c++11,遇到下面問題。。

'thread' isnotamemberof 'std

'yield' is not a member of 'std::this_thread'

sleep_for’ is not a member of ‘std::this_thread’

原因是編譯時缺少選項所致,導致一些巨集未產生在諸如c++config.h這樣的檔案中,編譯出來的gcc有些新的名稱空間物件對外隱藏了。

_GLIBCXX_HAS_GTHREADS _GLIBCXX_USE_NANOSLEEP _GLIBCXX_USE_SCHED_YIELD
這些巨集只有被定義才能使用一些新函式 空間域 等,可以使用g++ -D巨集名 來臨時解決。

想一勞永逸只能重編gcc

只不過編譯選項改為

configure --enable-languages=c,c++ --enable-libstdcxx-time --disable-checking --prefix=/usr/local/gcc-4.7.2 --disable-multilib --with-gmp=/usr/local/gmp-4.3.2 --with-mpfr=/usr/local/mpfr-2.4.2 --with-mpc=/usr/local/mpc-0.8.1

--enable-languages,說明你要讓你的gcc支援那些語言

--enable-libstdcxx-time,開啟c++2011的一些新特性 時間 yield nanosleep this_thread etc..

--disable-multilib不生成編譯為其他平臺可執行程式碼的交叉編譯器

--disable-checking生成的編譯器在編譯過程中不做額外檢查

重編後,g++可以使用c++11新特性。使用-std=c++11選項。

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

相關推薦

#gcc4.7.2編譯支援c++11標準解決not a member問題

使用g++4.7.2熟悉c++11,遇到下面問題。。 'thread' isnotamemberof 'std 'yield' is not a member of 'std::this_thread' sleep_for’ is not a member of ‘st

linux下安裝或升級GCC4.8.2支援C++11標準[轉]

在編譯kenlm的時候需要安裝gcc, 然後還需要安裝g++。 g++安裝命令:sudo apt-get install g++ ----------------------以下為網上轉載內容,加上自己修改------------------ 本文主要介紹在Linux系統下,如何升級GCC以支援C+

linux下安裝或升級GCC 4.8支援C++11標準

C++11標準在2011年8月份獲得一致通過,這是自1998年後C++語言第一次大修訂,對C++語言進行了改進和擴充。隨後各編譯器廠商都各自實現或部分實現了C++中的特性 。   如需檢視各編譯器對C++11的支援程度,請參看文章: 轉自:http://www.d

RedHat gcc編譯器版本升級到4.8.2支援C++11標準

原來環境資訊 Red Hat Enterprise Linux Server release 6.4 (Santiago) gcc4.4.7 升級到gcc4.8.2 gcc4.8以上版本才支援C++11標準,網上很多都是裝的4.8系列的版本,

Ubuntu升級g++-4.8支援C++11

也許你和我一樣在升級g++到4.8後發現用g++ a.cpp -o a還是提示編譯錯誤,那這篇文章給你答案。 轉自:http://my.oschina.net/zenglingfan/blog/169564 1. 安裝 gcc-4.8 為了使用C++ 11, 須安裝 gcc

linux下安裝或升級GCC 4.8以上版本(包括),支援C++11

本文轉載自:http://www.cnblogs.com/lizhenghn/p/3550996.html C++11標準在2011年8月份獲得一致通過,這是自1998年後C++語言第一次大修訂,對C++語言進行了改進和擴充。隨後各編譯器廠商都各自實現或部分實現了

linux下安裝或升級GCC4.8.2支持C++11標準[轉]

生成 文件內容 手動安裝 網址 com disable string main cti 在編譯kenlm的時候需要安裝gcc, 然後還需要安裝g++。 g++安裝命令:sudo apt-get install g++ ----------------------以下為網上

用msys1.0+mingw gcc4.7.1編譯libodb(C++ ORM)

oca code start content out 當前 six xcode -- 這裏主要使用的是libodb 對sqlite數據庫的支持. (1)下載編譯sqlite3,當初編譯go-sqlite3的時候下載過sqlite3,就直接拿過來用了

linux之讓終端支援C++11/14編譯cpp檔案

1  問題 我們的專案很多智慧指標,但是我linux的終端肯定不支援C++11/14, 我們平時都是用的下面的命令編譯c++檔案 g++ -g file.cpp -o file  r 如果是用c++11編譯需要改成如下 g++ -g -Wall -std=c+

NDK編譯支援C++11

APP_CPPFLAGS += -std=c++11 // APP_CPPFLAGS += -std=gnu++11 NDK_TOOLCHAIN_VERSION=4.8 APP_STL=gnustl_

gcc g++ 支援c++11編譯標準和區別

g++ -g -Wall -std=c++11 main.cpp gcc -g -Wall -std=c11 main.cpp 如果不想每次寫這個-std=C++11這個選項該怎麼辦呢?   方法1:寫Makefile   方法2:取別名 :alias g++11

gcc g++支持C++11 標準編譯及其區別

包含 別名 glob sin 你會 con 並且 c++程序 轉換成 g++ -g -Wall -std=c++11 main.cpp gcc -g -Wall -std=c11 main.cpp 如果不想每次寫這個-std=C++11這個選項該怎麽辦呢?   方法出

使用 Go-Ethereum 1.7.2搭建太坊私有鏈

lean nic 腳本 ica welcome accounts oot db4 upgrade 1、什麽是Ethereum(以太坊)   以太坊(Ethereum)並不是一個機構,而是一款能夠在區塊鏈上實現智能合約、開源的底層系統,以太坊從誕生到2017年5月,短短3年

php 7.2 編譯安裝

腳本 127.0.0.1 start mod sasl lda crypt children 路徑 yum -y install libxml2 libxml2-devel openssl openssl-devel curl-devel libjpeg-devel lib

Redhat 7.2 編譯安裝PostgreSQL 10

zxvf dha 編碼 -- profile https bin 環境 方式 1.環境說明 CentOS7.2 postgresql10.4 2.下載 postgresql的官方地址 https://www.postgresql.org/ftp/source/ 在下載列表

[RS] gcc4.9.2編譯python3.6.5出現

python3 share ipv6 6.5 code local reads fuse ons ./configure --enable-shared --enable-optimizations --enable-ipv6 --enable-big-digits --

CentOS 7.2 下 mysql 8.0.11二進制安裝(親測)

type server png not tex 分享 chown sed tar 本文主要介紹mysql 8.0.11二進制安裝,具體步驟如下1. 解壓文件tar -zxvf mysql-8.0.11-el7-x86_64.tar.gz2. 移動解壓後的數據庫文件mv my

支援 C++11/14/17 功能(現代 C++)

若要了解有關 Visual Studio 2017 RC 的最新文件,請參閱 Visual Studio 2017 RC 文件。 本文描述了 Visual C++ 中的 C++11/14/17 功能。 本文內容 Visual C++ 實現了 C+

CentOS上升級gcc編譯器使支援C++11

首先向博主致敬,好的東西拿來共享了,用一下不錯。 https://blog.csdn.net/clirus/article/details/62424517   0. 目標  最近在學習c++11,我本機裝的CentOS編譯器較老,不支援C++11的新特性,所以我需要把g

Cuda5.5不支援C++11解決方法

    最近在做的專案中既用到了Cuda,同時又用到了C++11的一些新的特性,在用gcc編譯的時候會出現錯誤。     錯誤提示為: /usr/include/c++/4.6/x86_64-linux-gnu/./bits/c++config.h(159): error