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.
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
.
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.)
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.
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
.
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 locate
is awesome !
Dans le dossier
Applications/Xcode/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include
ou similaire.