Maison > développement back-end > C++ > le corps du texte

Pourquoi mon code C ne parvient-il pas à se compiler avec l'en-tête `` après la mise à niveau vers Catalina ?

Patricia Arquette
Libérer: 2024-11-15 10:15:02
original
560 Les gens l'ont consulté

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

Catalina C : Erreur d'en-tête : membre 'signbit' non défini

Introduction

La mise à niveau vers Catalina à partir de Mojave peut introduire des problèmes lors de la compilation de programmes qui s'appuient sur en-tête. Cela est dû à un changement dans la façon dont les bibliothèques système sont gérées dans Catalina.

Énoncé du problème

Après la mise à niveau, la tentative de compilation de code à l'aide de l'outil header entraîne des erreurs telles que :

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
Copier après la connexion

Cause

Catalina purge et protège le répertoire /usr/include, où se trouvent généralement les en-têtes C. Par conséquent, les systèmes de build peuvent ne pas parvenir à localiser les en-têtes nécessaires.

Solution

Pour résoudre ce problème, il est nécessaire de pointer le système de build vers les en-têtes corrects à l'aide de l'indicateur du compilateur -isysroot. . Voici les étapes à suivre :

  1. Vérifiez que Xcode est à jour.
  2. Déterminez le chemin du SDK système à l'aide de xcrun --show-sdk-path, et modifiez le système de build en conséquence :

    • CMake : set(CMAKE_OSX_SYSROOT /sdk/path) ou set(CMAKE_CXX_FLAGS "[...] -isysroot /sdk/path")
    • Autres compilateurs : Ajoutez -isysroot /sdk/path au compilateur flags

Conclusion

Suivre ces étapes devrait résoudre le problème et autoriser les programmes utilisant le en-tête pour compiler avec succès sous Catalina.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal