Pourquoi / usr / include est-il manquant? J'ai installé Xcode et les outils de ligne de commande (Mojave)

6

Je viens de mettre à niveau Mojave à partir de High Sierra et d’installer Xcode ainsi que ses outils de ligne de commande et des outils supplémentaires. Rien ne compilera depuis le terminal, tout indique que / usr / include est manquant!

J'ai vérifié et TOUS les répertoires liés au développement sous / usr sont manquants!

Une idée pour régler le problème?

Bryan Dunphy
la source

Réponses:

10

Vous devez exécuter une autre étape après avoir installé les outils de ligne de commande:

installer -pkg /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg -target /

Pourquoi? Aucune idée, nouvel outil habituel de développement des outils de construction d’OS Apple.

Nicholas Smith
la source
3
Nicholas Smith: Comment l'avez-vous découvert?
Bryan Dunphy
1
Je n'ai même pas de répertoire de packages?!
nohillside
Je l'ai vu sur StackOverflow à un moment donné et cela me restait dans la tête.
Nicholas Smith
Vous avez probablement besoin des outils de ligne de commande avant d’essayer cela. Voir cette réponse .
ephsmith
1
Vous pourriez avoir besoin d'utiliser sudo pour que cette commande fonctionne
stackErr
4

Le "pourquoi" vient du fait qu'Apple a déconseillé de posséder un fichier / usr / include distinct du SDK. Vous ne devriez pas compter sur sa progression.

Les compilateurs savent déjà trouver leurs inclus dans le SDK, il n’ya donc plus vraiment besoin du répertoire / usr / include. Vous pouvez trouver le répertoire d'installation du SDK pour les fichiers d'inclusion à l'aide de xcrun --show-sdk-path

Perry
la source
4
Est-ce documenté quelque part?
Mark
Sauf le fait que macOS est certifié (était) unix04.
lanza
Être conforme à la spécification Single Unix ou à POSIX ne nécessite pas que / usr / include soit présent dans le système de fichiers.
Perry
Et oui, c'est documenté dans la documentation du SDK.
Perry
la compilateurs pourrait savoir, mais que diriez-vous de divers outils de configuration, par exemple. autoconf. Je crois que beaucoup de macros autoconf sont écrites avec l’hypothèse que quelque chose ait de sens dans / usr Par exemple. AC_CHECK_HEADER fonctionnerait-il toujours?
Dima Pasechnik