使用 GCC 编译时何时使用“-stdlib=libstdc”标志
在某些情况下,显式设置“-stdlib= libstdc " 标志在使用 GCC 编译时是必需的。情况如下:
在 Linux 上:
默认情况下,Linux 发行版使用 libstdc 作为标准 C 库。此外,现代版本的 GCC 在其捆绑的 libstdc 中固有地支持 C 11。因此,要在 Linux 上编译 C 11 代码,只需使用带有 g 的“-std=c 11”标志就足够了:
g++ -std=c++11 input.cxx -o a.out
在 Pre-Mavericks OS X 上:
从历史上看,OS X 上的 g 是 clang 的别名。在这种情况下,Apple 的旧版本 libstdc 是默认值。要利用包含 C 11 支持的 libc ,您必须显式指定“-stdlib=libc ”:
g++ -std=c++11 -stdlib=libc++ input.cxx -o a.out
在 Mavericks 和更高版本的 OS X 上:
从 OS X Mavericks 开始,libc 成为默认的 C 库。因此,无需使用“-stdlib=”标志:
clang++ -std=c++11 input.cxx -o a.out
在 OS X 上针对 libstdc 进行构建:
从 Xcode 10 开始,构建不再支持针对 libstdc 的应用程序。针对 libstdc 编译的现有代码将继续运行,但不允许编译新代码。
以上是使用 GCC 编译时何时需要'-stdlib=libstdc”标志?的详细内容。更多信息请关注PHP中文网其他相关文章!