Bil*_*nch 77
在Linux上:通常,所有常用的Linux发行版默认使用libstdc ++,所有现代版本的GCC都附带一个支持C++ 11的libstdc ++.如果要在此处编译c ++ 11代码,请使用以下方法之一:
g++ -std=c++11 input.cxx -o a.outg++ -std=gnu++11 input.cxx -o a.out在Mavericks之前的OS X上:g++实际上是别名clang++,Apple的旧版libstdc ++是默认的.您可以通过传递使用libc ++(包括c ++ 11库支持)-stdlib=libc++.如果要在此处编译c ++ 11代码,请使用以下方法之一:
g++ -std=c++11 -stdlib=libc++ input.cxx -o a.outg++ -std=gnu++11 -stdlib=libc++ input.cxx -o a.outclang++ -std=c++11 -stdlib=libc++ input.cxx -o a.outclang++ -std=gnu++11 -stdlib=libc++ input.cxx -o a.out自Mavericks以来的OS X:libc ++是默认的.您可以通过传递使用Apple旧版本的libstdc ++(不包括c ++ 11库支持)-stdlib=libstdc++
clang++ -std=c++11 input.cxx -o a.outclang++ -std=gnu++11 input.cxx -o a.outJon*_*ely 17
什么时候需要使用
-stdlib=libstdc++gcc编译时使用编译器和链接器的标志?
简短回答:从不
更长的答案:-stdlib是一个Clang标志,不适用于任何版本的GCC.在Mac OS X上,有时gcc和g++命令实际上是Clang 而不是 GCC的别名,Apple发布的libstdc ++版本很古老(大约在2008年),所以它当然不支持C++ 11.这意味着在OS X上使用Clang-pretending-to-GCC时,您可以-stdlib=libc++选择Clang的新C++ 11兼容库,或者您可以-stdlib=libstdc++用来选择libstdc ++之前的C++ 11古董版本属于博物馆.但是在GNU/Linux上gcc,g++真的是GCC而不是Clang,因此该-stdlib选项根本不起作用.
编译器是否自动使用libstdc ++?
是的,GCC总是使用的libstdc ++,除非你告诉它使用没有标准库,在所有的-nostdlib选项(在这种情况下,您可能需要避免使用任何标准库的功能,或者使用-I与-L和-l标志将它指向另外一套头和库文件).
我在Ubuntu 13.10上使用gcc4.8.2,我想使用c ++ 11标准.我已经传递
-std=c++11给了编译器.
你不需要做任何其他事情.GCC自带了C++标准库(libstdc ++)的实现,它与GCC本身一起开发和测试,因此GCC的版本和libstdc ++的版本是100%兼容的.如果使用-std=c++11then 编译,则可以在g++编译器中启用C++ 11功能,并在libstdc ++头文件中启用C++ 11功能.
如果你使用g ++前端而不是gcc前端,编译器会自动使用libstdc ++.
| 归档时间: |
|
| 查看次数: |
69385 次 |
| 最近记录: |