Où sont inclus les fichiers stockés - Ubuntu Linux, GCC
Donc, quand nous faisons les suivantes:
#include <stdio.h>
contre
#include "myFile.h"
le compilateur GCC dans mon cas, on sait où stdio.h (et même le fichier objet) se trouvent sur mon disque dur. Il utilise juste les fichiers avec aucune interaction de moi.
Je pense que sur ma machine Ubuntu Linux les fichiers sont stockés à /usr/include/
. Comment le compilateur de savoir où trouver ces fichiers? Est-ce configurables ou est-ce juste la prévue par défaut? Où pourrais-je regarder pour cette configuration?
Depuis que je suis de poser une question sur ces inclure des fichiers, ce qui sont la source des fichiers? Je sais que cela peut être floue dans la communauté Linux, mais qui gère ces? Qui serait de fournir et de gérer les mêmes fichiers pour Windows compilateur.
J'ai toujours été sous l'impression qu'ils venir avec le compilateur, mais c'était une hypothèse...
Vous devez vous connecter pour publier un commentaire.
Voir ici: Chemin De Recherche
Résumé:
Lorsque le fichier à inclure est entre parenthèses le préprocesseur recherche en premier dans les chemins spécifiés via le -je drapeau. Puis, il cherche la norme chemins à inclure (voir le lien ci-dessus, et utiliser le -v drapeau de le tester sur votre système).
Lorsque le fichier à inclure est devis le préprocesseur recherche d'abord dans le répertoire courant, puis les chemins spécifiés par -iquote, puis -je chemins, puis la norme chemins.
-nostdinc peut être utilisé pour empêcher le préprocesseur de la recherche de la norme chemins d'accès à tous.
Les variables d'environnement peut également être utilisé pour ajouter des chemins de recherche.
Lors de la compilation si vous utilisez le -v drapeau, vous pouvez voir les chemins de recherche utilisé.
gcc est un riche et complexe "orchestrer" programme qui appelle beaucoup d'autres programmes afin de s'acquitter de ses fonctions. Le but était de voir où
#include "goo"
et#include <zap>
recherche sur votre système, je vous recommande:C'est une façon de voir les listes de recherche de l'inclusion de fichiers, y compris (le cas échéant) les répertoires dans lesquels
#include "..."
sera, mais#include <...>
ne sera pas. Cette liste précise, je vous montre est en fait sur Mac OS X (aka Darwin), mais les commandes que je vous recommandons de vous montrera les listes de recherche (ainsi que d'intéressants détails sur la configuration que j'ai remplacé avec...
ici;-) sur n'importe quel système sur lequel gcc s'exécute correctement.Karl répondu à votre recherche de chemin de question, mais aussi loin que la "source des fichiers" va, une chose à prendre en compte est que si vous installez le
libfoo
paquet et voulez faire un peu de développement avec elle (c'est à dire, utiliser ses en-têtes), vous aurez aussi besoin d'installerlibfoo-dev
. La bibliothèque standard de fichiers d'en-tête sont déjà en/usr/include
, comme vous l'avez vu.Noter que certaines bibliothèques avec beaucoup d'en-têtes de les installer dans un sous-répertoire, par exemple,
/usr/include/openssl
. D'inclure l'un de ces, il suffit de fournir le chemin d'accès sans/usr/include
partie, par exemple:La
\#include
fichiers de gcc sont stockés dans/usr/include
.La norme inclure des fichiers de g++ sont stockés dans
/usr/include/c++
.