


Warum kann Clang mit libc im C 0x-Modus keine Boost::program_options-Beispiele verknüpfen?
Nov 02, 2024 pm 03:21 PMWarum kann dieses boost::program_options-Beispiel nicht mit libc im c 0x-Modus verknüpft werden?
Hintergrund:
Beim Versuch, ein Boost::program_options-Beispiel mit Clang im C 0x-Modus mit libc zu kompilieren und zu verknüpfen, tritt der folgende Fehler auf:
Undefined symbols for architecture x86_64: // Various undefined symbols related to Boost::program_options
Erklärung:
Der Hauptgrund für diesen Fehler ist, dass libc nicht binärkompatibel mit libstdc von GCC ist. Konkret:
- In libstdc wird std::string referenzgezählt.
- In libc verwendet std::string die „Short String Optimization“ (SSO), die über einen anderen Speicher verfügt Layout und Verhalten.
Lösung:
Um dieses Problem zu beheben, müssen Sie Boost mit Clang mit libc als Standardbibliothek neu erstellen:
clang++ -stdlib=libc++ ...
Grund für Binärinkompatibilität:
Um versehentliches Mischen und Laufzeitabstürze aufgrund von Binärinkompatibilität zu verhindern, nutzt libc die Inline-Namespace-Funktion von C 11, um die ABI (Application Binary Interface) von zu ändern std::string unter Beibehaltung derselben API (Application Programming Interface). Dadurch wird sichergestellt, dass der Linker zwischen std::string von libstdc und std::string von libc unterscheiden kann.
Das obige ist der detaillierte Inhalt vonWarum kann Clang mit libc im C 0x-Modus keine Boost::program_options-Beispiele verknüpfen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heißer Artikel

Hot-Tools-Tags

Heißer Artikel

Heiße Artikel -Tags

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

C Sprachfunktionsformat -Buchstaben -Fall -Konvertierungsschritte

GULC: C -Bibliothek von Grund auf neu gebaut

Welche Werte sind von C -Sprachfunktionen zurückgegeben? Was bestimmt den Rückgabewert?

Was sind die Definitionen und Aufrufregeln von C -Sprachfunktionen und was sind die?

Wie funktioniert die C -Standard -Vorlagenbibliothek (STL)?

Wo ist der Rückgabewert der C -Sprachfunktion im Speicher?

eindeutiger Gebrauch und Phrasenfreigabe

Wie benutze ich Algorithmen aus der STL (sortieren, finden, transformieren usw.) effizient?
