Heim  >  Artikel  >  Backend-Entwicklung  >  Warum kann Boost::Program_Options nicht verknüpft werden, wenn Clang mit libc im C 0x-Modus verwendet wird?

Warum kann Boost::Program_Options nicht verknüpft werden, wenn Clang mit libc im C 0x-Modus verwendet wird?

Barbara Streisand
Barbara StreisandOriginal
2024-11-03 20:08:291055Durchsuche

Why Does Boost::Program_Options Fail to Link When Using Clang with libc   in C  0x Mode?

Warum kann boost::program_options nicht verknüpft werden, wenn clang mit libc im c 0x-Modus verwendet wird?

Obwohl Boost mithilfe von clang mit der libc-Bibliothek kompiliert wurde, ist der Code Die Verknüpfung schlägt fehl, wenn Clang im C 0x-Modus verwendet wird. Dies liegt daran, dass libc nicht binärkompatibel mit libstdc von gcc ist. Während die API von std::string gleich bleibt, wird ihr ABI mithilfe der Inline-Namespace-Funktion von C 11 geändert, was dazu führt, dass der Linker std::string und std::__1::basic_string als unterschiedliche Datenstrukturen behandelt. Dies verhindert eine erfolgreiche Verknüpfung zwischen der Binärdatei und der Bibliothek.

Das obige ist der detaillierte Inhalt vonWarum kann Boost::Program_Options nicht verknüpft werden, wenn Clang mit libc im C 0x-Modus verwendet wird?. 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