何时需要使用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前端。