ホームページ >バックエンド開発 >C++ >GCC でコンパイルするときに「-stdlib=libstdc」を指定するのはどのような場合ですか?

GCC でコンパイルするときに「-stdlib=libstdc」を指定するのはどのような場合ですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-10-24 02:20:02539ブラウズ

When to Specify

-stdlib=libstdc を使用する場合

gcc でコンパイルする場合、-stdlib=libstdc フラグは使用する C 標準ライブラリを指定します。ほとんどの場合、コンパイラはデフォルトとして GNU C ライブラリである libstdc を自動的に使用します。ただし、 -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 がデフォルトでした。 C 11 ライブラリのサポートを含む libc を使用するには、 -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 (Mavericks より前): 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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。