Heim > Artikel > Backend-Entwicklung > Wann ist das Flag -stdlib=libstdc während der Kompilierung 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:
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!