J'ai utilisé la commande gcc sur le terminal pour compiler des programmes C mais tout d'un coup, après une mise à jour du système d'exploitation de mon Mac (vers macOS 10.14 Mojave et XCode 10.0), j'ai commencé à recevoir le message:
test.c:8:10: fatal error: stdio.h: No such file or directory
#include <stdio.h>
^~~~~~~~~
compilation terminated.
J'ai déjà installé gcc car je peux le trouver /usr/local/bin
et il y a vraiment un gcc là-dedans. J'ai essayé d'exécuter le même fichier sur mon autre iMac et cela a fonctionné sans aucun problème.
J'ai essayé de courir xcode-select --install
et il était déjà installé, donc cela n'a pas résolu le problème que j'ai maintenant. Je suppose que le chemin est foiré car il ne semble pas pouvoir être trouvé gcc
après avoir commencé à copier et coller des commandes d'autres ressources pour résoudre ce problème.
Voudrais de l'aide à ce sujet.
echo "#include <a.h>" | gcc -v -x c -
xocde-select --install
c'est la bonne solution. Vers quel o / s avez-vous mis à niveau? Mojave 10.14? Quel XCode avez-vous installé? 10.0 ou une autre version?open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
en ligne de commande), je l'ai de/usr/include
nouveau, et mon GCC 8.2.0 fonctionne à nouveau. Merci pour le pointeur; bravo pour le trouver. Je vous suggère d'écrire la réponse car il y aura probablement d'autres personnes qui se heurteront au problème.Réponses:
TL; DR
Assurez-vous d'avoir téléchargé le dernier package 'Command Line Tools' et exécutez-le à partir d'un terminal (ligne de commande):
Pour plus d'informations sur Catalina, consultez Impossible de compiler un programme C sur un Mac après la mise à niveau vers Catalina 10.15 .
Extraire une réponse semi-cohérente à partir de commentaires assez longs…
Préambule
Très souvent,
xcode-select --install
a été la bonne solution, mais cela ne semble pas aider cette fois. Avez-vous essayé d'exécuter l'interface graphique principale de Xcode? Il peut installer des logiciels supplémentaires pour vous et nettoyer. Je l'ai fait après l'installation de Xcode 10.0, mais il y a une semaine ou plus, bien avant la mise à niveau vers Mojave.J'observe que si votre GCC est installé dans
/usr/local/bin
, vous n'utilisez probablement pas le GCC de Xcode; qui est normalement installé dans/usr/bin
.J'ai moi aussi mis à jour vers macOS 10.14 Mojave et Xcode 10.0. Cependant, le système
/usr/bin/gcc
et le système/usr/bin/clang
fonctionnent pour moi (Apple LLVM version 10.0.0 (clang-1000.11.45.2) Target: x86_64-apple-darwin18.0.0
pour les deux.) J'ai un problème avec mon GCC 8.2.0 construit maison qui ne trouve pas d'en-têtes/usr/include
, ce qui est parallèle à votre problème de/usr/local/bin/gcc
ne pas trouver d'en-têtes non plus.J'ai fait un peu de comparaison, et ma machine Mojave n'en a pas
/usr/include
du tout, mais/usr/bin/clang
est capable de compiler OK. Un en-tête (_stdio.h
, avec un trait de soulignement au début) était dans mon ancien/usr/include
; il manque maintenant (d'où mon problème avec GCC 8.2.0). J'ai couruxcode-select --install
et il a dit "xcode-select: note: install requested for command line developer tools
" et ensuite lancé un programme d'installation GUI qui m'a montré une licence que j'ai acceptée, et il a téléchargé et installé les outils de ligne de commande - ou c'est ce qu'il prétend.J'ai ensuite exécuté l'interface graphique Xcode (espace de commande, Xcode, retour) et il a dit qu'il fallait installer plus de logiciel, mais toujours non
/usr/include
. Mais je peux compiler avec/usr/bin/clang
et/usr/bin/gcc
- et l'-v
option suggère qu'ils utilisentSolution de travail
Puis Maxxx a noté :
Lorsque tout le reste échoue, lisez le manuel ou, dans ce cas, les notes de version. Je ne suis pas terriblement surpris de voir qu'Apple souhaite tourner le dos à son héritage Unix, mais je suis déçu. S'ils font attention, ils pourraient me chasser. Merci pour l'information.
Après avoir installé le paquet en utilisant la commande suivante sur la ligne de commande, je l'ai de
/usr/include
nouveau, et mon GCC 8.2.0 fonctionne à nouveau.Téléchargement des outils de ligne de commande
Comme Vesal le souligne dans un commentaire précieux , vous devez télécharger le package Outils de ligne de commande pour Xcode 10.1 sur Mojave 10.14, et vous pouvez le faire à partir de:
Vous devez vous connecter avec un identifiant Apple pour pouvoir obtenir le téléchargement. Une fois le téléchargement terminé, installez le package des outils de ligne de commande. Ensuite, installez les en-têtes comme décrit dans la section «Solution de travail».
Cela a fonctionné pour moi sur Mojave 10.14.1. J'ai dû le télécharger avant, mais j'avais oublié au moment où je répondais à cette question.
Mettre à niveau vers Mojave 10.14.4 et Xcode 10.2
Le 17/05/2019 ou vers cette date, j'ai mis à jour vers Mojave 10.14.4, et les outils de ligne de commande Xcode 10.2 ont également été mis à niveau (ou les outils de ligne de commande Xcode 10.1 ont été mis à niveau vers 10.2). La
open
commande ci-dessus a corrigé les en-têtes manquants. Il peut encore y avoir des aventures à venir avec la mise à niveau du Xcode principal vers la version 10.2, puis la réinstallation des outils de ligne de commande et du package d'en-têtes.Mettre à niveau vers Xcode 10.3 (pour Mojave 10.14.6)
Le 22/07/2019, j'ai été informé via l'App Store que la mise à niveau vers Xcode 10.3 est disponible et qu'elle comprend des SDK pour iOS 12.4, tvOS 12.4, watchOS 5.3 et macOS Mojave 10.14.6. Je l'ai installé sur l'une de mes machines 10.14.5, je l'ai exécuté, et j'ai installé des composants supplémentaires comme il le suggérait, et il semble avoir laissé
/usr/include
intact.Plus tard le même jour, j'ai découvert que macOS Mojave 10.14.6 était également disponible (Préférences Système ⟶ Mise à jour logicielle), avec un package d'utilitaires de ligne de commande IIRC (il a été téléchargé et installé automatiquement). L'installation de la mise à jour o / s a, une fois de plus, effacé
/usr/include
, mais laopen
commande en haut de la réponse l'a rétablie à nouveau. La date que j'avais dans le fichier pour laopen
commande était le 15/07/2019.Mettre à niveau vers XCode 11.0 (pour Catalina 10.15)
La mise à niveau vers XCode 11.0 ("inclut Swift 5.1 et les SDK pour iOS 13, tvOS 13, watchOS 6 et macOS Catalina 10.15") a été publiée le 21/09/2019. J'ai été informé des `` mises à jour disponibles '', et je les ai téléchargées et installées sur des machines exécutant macOS Mojave 10.14.6 via l'application App Store (onglet Mises à jour) sans problème, et sans avoir à utiliser
/usr/include
. Immédiatement après l'installation (avant d'avoir exécuté l'application elle-même), j'ai essayé une recompilation et on m'a dit:L'exécution de that (
sudo xcodebuild -license
) m'a permis d'exécuter le compilateur. Depuis lors, j'ai exécuté l'application pour installer les composants supplémentaires dont elle a besoin; toujours pas de problème. Il reste à voir ce qui se passe lorsque je mets à niveau vers Catalina lui-même - mais mes machines macOS Mojave 10.14.6 sont toutes les deux correctes pour le moment (2019-09-24).la source
/usr/include
, et le package répertorié dans la réponse ci-dessus n'est pas présent/Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
etxcode-select --install
indique que les outils de ligne de commande ne sont actuellement pas disponibles.fatal error: bits/ctype_base.h: No such file or directory: #include <bits/ctype_base.h>
lors de la compilation de GCC 7.4.0 en utilisant libstdc ++ sur Mojave pour moiAprès avoir essayé toutes les réponses que j'ai pu trouver ici et en ligne, j'obtenais toujours des erreurs pour certains en-têtes manquants. Lorsque j'essayais de compiler pyRFR, j'obtenais des erreurs d'indisponibilité, ce
stdexcept
qui n'était apparemment pas installé/usr/include
avec les autres en-têtes. Cependant, j'ai trouvé où il se cachait dans Mojave et j'ai ajouté ceci à la fin de mon~/.bash_profile
fichier:export CPATH=/Library/Developer/CommandLineTools/usr/include/c++/v1
Cela fait, je peux maintenant compiler pyRFR et d'autres programmes C / C ++. Selon
echo | gcc -E -Wp,-v -
, gcc recherchait dans l'ancien emplacement ces en-têtes (sans le/c++/v1
), mais pas le nouvel emplacement, donc l'ajout de cela à CFLAGS l'a corrigé.la source
Lorsque vous
Mojave 10.14.6
/usr/include
été de nouveau suppriméThe file /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg does not exist.
etxcode-select --install xcode-select: error: command line tools are already installed, use "Software Update" to install updates
Ensuite, ce qui m'a aidé à récupérer le package mentionné, a été de supprimer tout le
CommandLineTools
dossier(sudo) rm -rf /Library/Developer/CommandLineTools
et de le réinstallerxcode-select --install
.la source
macOS_SDK_headers_for_macOS_10.14.pkg
get available et la commande ontopen /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
fait ce qui était censé faire. Mille mercis!!export CPATH=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/usr/include
Le problème est que Xcode, en particulier Xcode 10.x, n'a pas tout installé, alors assurez-vous que les outils de ligne de commande sont installés, tapez ceci dans un shell de terminal:
démarrez également Xcode et assurez-vous que toute l'installation requise est installée (vous devriez être invité si ce n'est pas le cas.) et comme Xcode 10 n'installe pas le SDK Mac OS complet, exécutez le programme d'installation à
car ce package n'est pas installé par Xcode 10.
la source
J'ai trouvé une excellente solution et une explication dans ce commentaire GitHub . L'astuce:
A fait le boulot.
la source
REMARQUE: ce qui suit est probablement très contextuel et limité dans le temps avant le basculement / la disponibilité générale de macos Catalina 10.15. Nouvel ordinateur portable. J'écris ce 1er octobre 2019.
Ces circonstances spécifiques sont, je crois, ce qui a causé des problèmes de construction pour moi. Ils peuvent ne pas s'appliquer dans la plupart des autres cas.
Le contexte:
macos 10.14.6 Mojave, Xcode 11.0, juste avant le lancement de macos Catalina 10.15 . Macbook Pro récemment acheté.
échec sur
pip install psycopg2
, qui est, fondamentalement, un package Python compilé à partir des sources.J'ai déjà effectué un certain nombre des ajustements suggérés dans les réponses données ici.
Mes erreurs:
Ce que j'ai fait jusqu'à présent, sans rien réparer:
xcode-select --install
open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
Toujours la même erreur sur stdio.h.
qui existe en plusieurs endroits:
Alors, allons à ce premier répertoire
clang
se plaint et regarde:Hah, nous avons un lien symbolique pour MacOSX10.15.sdk , mais aucun pour MacOSX10.14.sdk . Voici à
clang
nouveau ma première erreur:clang: warning: no such sysroot directory: '/Applications/Xcode.app/.../Developer/SDKs/MacOSX10.14.sdk' [-Wmissing-sysroot]
Je suppose qu'Apple a sauté le pistolet sur leur configuration xcode et pense déjà qu'ils sont sur Catalina. Puisqu'il s'agit d'un nouveau Mac, l'ancienne configuration pour 10.14 n'est pas en place.
LE CORRECTIF:
Lions symboliquement 10.14 de la même manière que 10.15:
ln -s MacOSX.sdk/ MacOSX10.14.sdk
btw, si je vais dans ce répertoire sdk, je trouve:
RÉSULTAT:
pip install psycopg2
travaux.Remarque: la commande pip install proprement dite ne faisait aucune référence à MacOSX10.14.sdk , qui est venu plus tard, peut-être par le mécanisme d'installation Python introspectant la version du système d'exploitation.
la source
pip
utilisez-vous? Je pense que cela pourrait être le problème majeur.Assurez-vous de vérifier les préférences Xcode -> Emplacements.
Les outils de ligne de commande que j'avais sélectionnés étaient pour la version précédente de Xcode (8.2.1 au lieu de 10.1)
la source
A eu des problèmes similaires à l'OP
Problème
Tentative de correction
J'ai installé la dernière version de XCode, cependant, les notes de publication indiquaient que le fichier mentionné dans le correctif précédent, de Jonathan ici, n'était plus disponible.
Détails ici https://developer.apple.com/documentation/xcode_release_notes/xcode_10_release_notes , sous la section Nouvelles fonctionnalités .
Solution qui a fonctionné pour moi ...
En utilisant les détails de ce commentaire, https://github.com/SOHU-Co/kafka-node/issues/881#issuecomment-396197724
J'ai trouvé que
brew doctor
j'ai signalé que j'avais des inclusions inutilisées dans mon/usr/local/
dossier.Donc, pour corriger, j'ai utilisé la commande fournie par l'utilisateur HowCrazy , pour trouver les inclusions inutilisées et les déplacer vers un dossier temporaire.
Répété ici ...
Après avoir exécuté les scripts, le problème du fichier d'inclusion avait disparu. nb: J'ai également commenté cette question ici .
la source
J'avais ce problème et rien n'a fonctionné . J'ai couru
xcode-select --install
et aussi installé/Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
.CONTEXTE
Comme j'avais des problèmes avec l' App Store sur un nouvel ordinateur portable, j'ai été obligé de télécharger le programme d'installation de Xcode Beta depuis le site Web d'Apple pour installer Xcode en dehors de l' App Store . Donc je n'avais installé que Xcode Beta .
SOLUTION
Ceci, (je pense), faisait
clang
pour ne pas trouver leSDKROOT
répertoire/Applications/Xcode.app/....
, car il n'y a pasBeta
de chemin, ou peut-être que Xcode Beta ne l'installe tout simplement pas (je ne sais pas). Pour résoudre le problème, j'ai dû supprimer Xcode Beta et résoudre le problème de l' App Store pour installer la version finale.tldr;
Si vous avez Xcode Beta , essayez de tout nettoyer et d'installer la version finale avant d'essayer les solutions qui fonctionnent pour d'autres personnes.
la source
J'ai essayé presque toutes les solutions affichées et rien n'a fonctionné pour moi. J'utilise Mojave OS (10.14.6) et ce qui a finalement fonctionné pour moi (après avoir supprimé et réinstallé Xcode et CLT et les en-têtes SDK):
avec
Maintenant les packages R qui reposent sur des compilateurs C s'installent avec succès
la source
Comme le souligne Jonathan Leffler ci-dessus, le fichier macOS_SDK_headers.pkg n'est plus présent dans Xcode 10.1.
Ce qui a fonctionné pour moi était de faire
brew upgrade
et les mises à jour de gcc et / ou de tout ce que les homebrews ont fait en coulisses ont résolu les problèmes de chemin.la source
La dépendance apue.h manquait toujours dans mon
/usr/local/include
après avoir réussi à résoudre ce problème sur Mac OS Catalina en suivant les instructions de cette réponseJ'ai téléchargé la dépendance manuellement depuis git et l' ai placée dans
/usr/local/include
la source
J'ai eu le même problème avec Golang (débogage avec Goland) après la migration. La seule chose (ridicule) qui a aidé est de renommer le dossier suivant:
Apparemment, il est lié à d'anciens fichiers installés par homebrew et maintenant cassés.
la source
@JL Peyret a raison!
si vous macos 10.14.6 Mojave, Xcode 11.0+
puis
cd /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs
sudo ln -s MacOSX.sdk / MacOSX10.14.sdk
la source