Heim >Backend-Entwicklung >C++ >Warum kann mein C-Code nach dem Upgrade auf Catalina nicht mit dem „'-Header kompiliert werden?

Warum kann mein C-Code nach dem Upgrade auf Catalina nicht mit dem „'-Header kompiliert werden?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-15 10:15:02638Durchsuche

Why is my C   code failing to compile with the `` header after upgrading to Catalina?

Catalina C: Header-Fehler: Undefiniertes 'Signbit'-Mitglied

Einführung

Ein Upgrade von Mojave auf Catalina kann beim Kompilieren von Programmen, die auf dem basieren, zu Problemen führen. Kopfzeile. Dies liegt an einer Änderung in der Art und Weise, wie die Systembibliotheken in Catalina gehandhabt werden.

Problembeschreibung

Nach dem Upgrade wurde versucht, Code mit der Funktion zu kompilieren. -Header führt zu Fehlern wie:

error: no member named 'signbit' in the global namespace
error: no member named 'fpclassify' in the global namespace
error: no member named 'isfinite' in the global namespace

Ursache

Catalina bereinigt und schützt das Verzeichnis /usr/include, in dem sich normalerweise die C-Header befinden. Infolgedessen können Build-Systeme möglicherweise nicht die erforderlichen Header finden.

Lösung

Um dieses Problem zu beheben, ist es notwendig, das Build-System mithilfe des Compiler-Flags -isysroot auf die richtigen Header zu verweisen . Hier sind die Schritte dazu:

  1. Überprüfen Sie, ob Xcode auf dem neuesten Stand ist.
  2. Bestimmen Sie den System-SDK-Pfad mit xcrun --show-sdk-path und Ändern Sie das Build-System entsprechend:

    • CMake: set(CMAKE_OSX_SYSROOT /sdk/path) oder set(CMAKE_CXX_FLAGS "[...] -isysroot /sdk/path")
    • Andere Compiler: -isysroot /sdk/path zum hinzufügen Compiler Flags

Fazit

Das Befolgen dieser Schritte sollte das Problem beheben und es Programmen ermöglichen, die die Funktion Header zum erfolgreichen Kompilieren unter Catalina.

Das obige ist der detaillierte Inhalt vonWarum kann mein C-Code nach dem Upgrade auf Catalina nicht mit dem „'-Header kompiliert werden?. 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