web-dev-qa-db-fra.com

Où est mon "stdio.h" sur Mac?

Je sais que Mac OS X est un système basé sur Unix. Et j'ai entendu dire que la bibliothèque standard C, telle que stdio.h, se trouve dans /usr/local/include ou /usr/include. Mais il n'y a aucune sorte de bibliothèque dans ce répertoire. J'utilise Terminal pour effectuer des recherches dans ce répertoire et j'utilise également une commande telle que find ./ -iname "stdio.h", mais rien ne sort. Cependant, assez curieusement, la commande gcc -test.c -o test fonctionne. Comment est-ce arrivé? Je veux savoir où se trouve ma bibliothèque C . P.s J'utilise aussi Xcode aussi. Est-ce lié à cette application? Aidez moi! Et j'ai AWS EC2 serveur Linux, et il a les deux bibliothèques que j'ai référées ci-dessus.

13
user3595632

Si vous disposez de Xcode mais que vous n'avez pas installé le package facultatif Outils de ligne de commande, les bibliothèques include et standard ne se trouvent peut-être pas à l'emplacement habituel. Essayer:

$ find /Applications/Xcode.app -name stdio.h

et vous verrez probablement quelque chose comme:

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/include/c++/4.2.1/tr1/stdio.h
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/include/stdio.h
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/include/sys/stdio.h
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/include/c++/4.2.1/tr1/stdio.h
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/include/stdio.h
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/include/sys/stdio.h
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/System/Library/Frameworks/Kernel.framework/Versions/A/Headers/sys/stdio.h
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include/c++/4.2.1/tr1/stdio.h
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include/stdio.h
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include/sys/stdio.h
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/c++/4.2.1/tr1/stdio.h
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/stdio.h

Cependant, vous voudrez peut-êtreinstaller le paquet Outils de ligne de commande si vous envisagez de faire une programmation non-Xcode (ligne de commande, par exemple). Vous verrez alors les en-têtes et les bibliothèques habituels dans /usr/include et /usr/lib.

24
Paul R

Si les outils de ligne de commande ne sont pas installés, vous pouvez exécuter:

xcode-select --install

Une boîte de dialogue s'ouvre pour vous permettre d'accepter le contrat de licence, etc.

(Cela manquait dans les réponses ci-dessus.)

21
polarise

créer/mettre à jour un lien symbolique pour /usr/include afin que les bibliothèques soient détectées:

Sudo ln -sf /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/usr/include /usr/include

Le chemin ci-dessus peut être trouvé en recherchant stdio.h

find /Applications/Xcode.app -path '*/usr/include/stdio.h'

Je dois le faire avec chaque mise à jour du SDK XCode/MacOS, avec la mise à niveau XCode 7 aujourd'hui.

Une fois les outils de ligne de commande installés, ils ne peuvent pas être réinstallés avec xcode-select. Par conséquent, le chemin ne peut pas être mis à jour avec une mise à niveau Mac AppStore.

La désinstallation et la réinstallation de XCode, puis l'exécution de xcode-select --install peuvent mettre à jour le chemin, mais sont excessives.

Certains articles mentionnent également xcode-select --switch /Application/Xcode.app, mais je n’ai pas eu beaucoup de chance avec cela.

8
Tarun

Sur mon ordinateur portable, il apparaît dans de nombreux endroits, comme /usr/include/stdio.h et /usr/include/sys/stdio.h et /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/include/stdio.h.

2
Alexander Perechnev

Si vous avez déjà construit votre base de données de localisation, vous pouvez utiliser

locate stdio.h

Si vous ne l'avez pas déjà fait, construisez-le. La commande locateis awesome !

1
Maxim Chetrusca

Dans le dossier 

Applications/Xcode/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include

ou similaire.

0
emlai