web-dev-qa-db-fra.com

Impossible de compiler un programme C sur un Mac après la mise à niveau vers Catalina 10.15

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?

60
Jonathan Leffler

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
0
Y Liu

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.

0
frbl

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
0
Salil

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
0
pfcstyle

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

0
Matthew Barbara