Il y a une question précédente Impossible de compiler le programme C sur un Mac après la mise à niveau vers Mojave , et les réponses à cela ont couvert la plupart des variations sur ce qui ne va pas.
Maintenant - à partir du lundi 2019-10-07 - vous pouvez mettre à niveau vers macOS Catalina 10.15. Encore une fois, lors de la mise à niveau, le /usr/include
le répertoire a été effacé par la mise à jour, même si XCode 11.0 a été installé avant la mise à niveau (de Mojave 10.14.6) vers Catalina. Par conséquent, les compilateurs sont conçus pour s’attendre à une /usr/include
le répertoire ne fonctionne plus.
La principale étape recommandée pour les problèmes de Mojave - en utilisant la commande:
open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
ne fonctionne pas hors de la porte car le répertoire /Library/Developer/CommandLineTools/Packages/
n'existe pas (il n'y a donc pas encore de .pkg
fichier à ouvrir).
Existe-t-il un bon moyen (officiel) de créer et de remplir le répertoire /usr/include
?
J'ai essayé 1) de lier manuellement 2) brew install llvm, mais ils n'ont pas fonctionné.
Enfin, cela a fonctionné pour moi: https://gitmemory.com/issue/pytorch/pytorch/31190/5651535
En définissant les variables env suivantes:
export CC=clang
export CXX=clang++
export MACOSX_DEPLOYMENT_TARGET=10.9
Dans mon cas, il me semblait que llvm
et gcc
étaient également installés en utilisant homebrew. Lorsque je les ai supprimés et que je me suis donc pleinement appuyé sur le macOS mac, il a pu retrouver les en-têtes et la compilation.
La solution était plus simple que je ne le pensais. Installez clang/llvm.
brew install llvm
Ensuite, nous devons créer nous-mêmes des liens symboliques.
for f in /usr/local/Cellar/llvm/9.0.0_1/bin/clang*; do ln -s ${f} /usr/local/bin/"${f##*/}"; done
Et
ln -s /usr/local/Cellar/llvm/9.0.0_1/include/c++ /usr/local/include/c++
Selon votre version llvm, modifiez les commandes ci-dessus.
Maintenant, vous pouvez compiler des programmes C++ sans passer aucun indicateur personnalisé.
clang++ hello.cpp
Pour moi, cela fonctionne bien comme suit:
1. xcode-select --install
2. Sudo ln -s /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/* /usr/local/include/
3. export SDKROOT=/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk
la dépendance apue.h manquait toujours dans mon /usr/local/include
après avoir suivi Komol Nath Roy réponse à cette question.
J'ai téléchargé la dépendance manuellement depuis git et l'ai placée dans /usr/local/include