何时需要使用flag -stdlib = libstdc ++?
什么时候需要使用gcc编译时使用flag -stdlib=libstdc++
作为编译器和链接器?
编译器是否自动使用libstdc ++?
我在Ubuntu 13.10上使用gcc4.8.2,我想使用c ++ 11标准。 我已经将-std=c++11
传递给编译器。
在Linux上 :通常,所有常用的Linux发行版都默认使用libstdc ++。 如果你想在这里编译c ++ 11代码,使用下面的一个:
-
g++ -std=c++11 input.cxx -o a.out
-
g++ -std=gnu++11 input.cxx -o a.out
在小牛之前的OS X上 :libstdc ++是默认的。 你可以通过传递-stdlib=libc++
来使用libc ++(包括c ++ 11库支持)。 如果你想在这里编译c ++ 11代码,使用下面的一个:
-
g++ -std=c++11 -stdlib=libc++ input.cxx -o a.out
-
g++ -std=gnu++11 -stdlib=libc++ input.cxx -o a.out
-
clang++ -std=c++11 -stdlib=libc++ input.cxx -o a.out
-
clang++ -std=gnu++11 -stdlib=libc++ input.cxx -o a.out
在小牛之后的OS X上 :libc ++是默认的。 您可以通过传递-stdlib=libstdc++
来使用libstdc ++(不包括c ++ 11库支持)
-
clang++ -std=c++11 input.cxx -o a.out
-
clang++ -std=gnu++11 input.cxx -o a.out
编译器自动使用libstdc ++,如果你使用g ++前端,而不是gcc前端。