首页  >  文章  >  后端开发  >  使用 GCC 编译时何时需要“-stdlib=libstdc”标志?

使用 GCC 编译时何时需要“-stdlib=libstdc”标志?

Linda Hamilton
Linda Hamilton原创
2024-10-24 01:27:29149浏览

When is the

使用 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn