GCC でコンパイルするときに「-stdlib=libstdc」フラグを使用する場合
一部のシナリオでは、「-stdlib=」を明示的に設定しますlibstdc " フラグは、GCC でコンパイルする場合に必要です。状況は次のとおりです:
Linux の場合:
デフォルトでは、Linux ディストリビューションは標準 C ライブラリとして libstdc を使用します。さらに、GCC の最新バージョンは、バンドルされている libstdc で C 11 を本質的にサポートしています。したがって、Linux で C 11 コードをコンパイルするには、g を指定して "-std=c 11" フラグを使用するだけで十分です。
g++ -std=c++11 input.cxx -o a.out
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 中国語 Web サイトの他の関連記事を参照してください。