首页  >  文章  >  后端开发  >  使用 GCC 编译时何时指定“-stdlib=libstdc”?

使用 GCC 编译时何时指定“-stdlib=libstdc”?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-10-24 02:20:02441浏览

When to Specify

何时使用 -stdlib=libstdc

使用 gcc 编译时, -stdlib=libstdc 标志指定要使用的 C 标准库。在大多数情况下,编译器将自动使用 libstdc (GNU C 库)作为默认值。但是,在某些情况下,可能需要显式指定 -stdlib=libstdc 。

编译器特定行为

在 Linux 上,所有主要发行版都使用 libstdc 作为默认 C 库,最近的 GCC 版本默认支持 C 11。要编译 C 11 代码,您可以使用:

  • g -std=c 11 input.cxx -o a.out
  • g -std=gnu 11 input.cxx - o a.out

在 Mavericks 之前的 OS X 上, g 是 clang 的别名,Apple 较旧的 libstdc 是默认值。要使用 libc (包括 C 11 库支持),请传递 -stdlib=libc 。编译选项包括:

  • 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 Mavericks 及更高版本

自 OS X Mavericks 以来,libc 已成为默认的 C 库。在这种情况下,您应该避免使用 -stdlib= 标志。值得注意的是,Xcode 10 及更高版本不再支持针对 libstdc 进行编译。

推荐编译选项

  • Linux:使用 g -std=c 11 input.cxx - o a.out 或 g -std=gnu 11 input.cxx -o a.out
  • OS X(小牛之前):使用 g -std=c 11 -stdlib=libc input.cxx -o a。 out 或 clang -std=c 11 -stdlib=libc input.cxx -o a.out
  • OS X(Mavericks 及更高版本):使用 clang -std=c 11 input.cxx -o a.out 或clang -std=gnu 11 input.cxx -o a.out

以上是使用 GCC 编译时何时指定“-stdlib=libstdc”?的详细内容。更多信息请关注PHP中文网其他相关文章!

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