-stdlib=libstdc 标志指示编译器和链接器在编译期间使用 libstdc 标准库实现。但是,并不总是需要显式指定此标志。
在其他平台上使用 Linux 或现代 GCC 时
对于大多数 Linux 发行版和当前的 GCC 版本,libstdc 是默认的标准库实现。因此,在这些平台上编译 C 11 代码时不需要使用 -stdlib=libstdc 标志。只需使用以下命令:
g++ -std=c++11 input.cxx -o a.out (GNU compiler) g++ -std=gnu++11 input.cxx -o a.out
在 Mavericks 之前的 macOS 上
在 Mavericks 之前的 macOS 版本上, g 是 clang 的符号链接。苹果较旧的 libstdc 实现是默认的。要使用提供 C 11 库支持的 libc ,需要 -stdlib=libc 标志:
g++ -std=c++11 -stdlib=libc++ input.cxx -o a.out (clang, not GNU compiler!) g++ -std=gnu++11 -stdlib=libc++ input.cxx -o a.out (clang, not GNU compiler!) clang++ -std=c++11 -stdlib=libc++ input.cxx -o a.out clang++ -std=gnu++11 -stdlib=libc++ input.cxx -o a.out
在 macOS 自 Mavericks 上
在 macOS Mavericks 及更高版本上,libc 是默认值。显式传递 -stdlib=libstdc 标志是不必要的:
clang++ -std=c++11 input.cxx -o a.out clang++ -std=gnu++11 input.cxx -o a.out
异常
在某些特定情况下,显式使用 -stdlib=libstdc 标志可能是有益的:
以上是编译期间何时需要 -stdlib=libstdc 标志?的详细内容。更多信息请关注PHP中文网其他相关文章!