Heim  >  Artikel  >  Backend-Entwicklung  >  Wann ist das Flag -stdlib=libstdc während der Kompilierung erforderlich?

Wann ist das Flag -stdlib=libstdc während der Kompilierung erforderlich?

DDD
DDDOriginal
2024-10-24 04:12:02604Durchsuche

When is the -stdlib=libstdc   Flag Required During Compilation?

Wann ist für die Kompilierung das Flag -stdlib=libstdc erforderlich?

Das Flag -stdlib=libstdc weist den Compiler und Linker an, während der Kompilierung die libstdc-Standardbibliotheksimplementierung zu verwenden. Es ist jedoch nicht immer notwendig, dieses Flag explizit anzugeben.

Bei Verwendung von Linux oder modernem GCC auf anderen Plattformen

Für die meisten Linux-Distributionen und aktuellen GCC-Versionen ist libstdc die standardmäßige Standardbibliotheksimplementierung. Daher ist die Verwendung des Flags -stdlib=libstdc beim Kompilieren von C 11-Code auf diesen Plattformen nicht erforderlich. Verwenden Sie einfach die folgenden Befehle:

g++ -std=c++11 input.cxx -o a.out (GNU compiler)
g++ -std=gnu++11 input.cxx -o a.out

Auf macOS vor Mavericks

Auf macOS-Versionen vor Mavericks war g ein symbolischer Link zu clang . Die ältere libstdc-Implementierung von Apple war die Standardeinstellung. Um libc zu verwenden, das C 11-Bibliotheksunterstützung bietet, war das Flag -stdlib=libc erforderlich:

g++ -std=c++11 -stdlib=libc++ input.cxx -o a.out (clang, not GNU compiler!)
g++ -std=gnu++11 -stdlib=libc++ input.cxx -o a.out (clang, not GNU compiler!)
clang++ -std=c++11 -stdlib=libc++ input.cxx -o a.out
clang++ -std=gnu++11 -stdlib=libc++ input.cxx -o a.out

Auf macOS seit Mavericks

Auf macOS Mavericks und höher , libc ist die Standardeinstellung. Die explizite Übergabe des Flags -stdlib=libstdc ist nicht erforderlich:

clang++ -std=c++11 input.cxx -o a.out
clang++ -std=gnu++11 input.cxx -o a.out

Ausnahmen

Es kann bestimmte Fälle geben, in denen die explizite Verwendung des Flags -stdlib=libstdc von Vorteil ist:

  • Beim Verknüpfen mit einer externen Bibliothek, die libstdc aus Kompatibilitätsgründen erfordert
  • Bei Symbolkonflikten zwischen libstdc und anderen Bibliotheken
  • Zu Debug- oder Fehlerbehebungszwecken

Das obige ist der detaillierte Inhalt vonWann ist das Flag -stdlib=libstdc während der Kompilierung erforderlich?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn