Où se trouvent les fichiers d'en-tête pour GCC?

10

Je veux ajouter manuellement des fichiers d'en-tête comme math.het graphic.hpour gccmais je ne sais pas où les mettre.

Chirag Soni
la source

Réponses:

13

Jetez d'abord un oeil dans /usr/includeou /usr/local/include.

Si vous n'y trouvez rien, essayez:

`gcc -print-prog-name=cc1plus` -v

Cette commande demande à gcc quel préprocesseur C ++ qu'il utilise, puis demande à ce préprocesseur où il recherche les inclus.

Vous obtiendrez une réponse fiable pour votre configuration spécifique.

De même, pour le préprocesseur C:

`gcc -print-prog-name=cc1` -v
Sachin Kamath
la source
6

Si vous voulez seulement savoir où le fichier est placé, utilisez simplement la commande Locate :

locate -b '\math.h'
locate -b '\graphics.h'

Peut-être avez-vous besoin de mettre à jour votre base de données avant:

sudo updatedb

C'est ainsi que je recherche l'emplacement de mes en-têtes. C'est beaucoup plus rapide que d'utiliser la commande find .

abu_bua
la source
math.hdevrait déjà être présent. Exemple:/usr/include/c++/7.3.0/math.h
Knud Larsen
Normalement, vous incluez simplement la lib avec le nom gcc.c -o name -lm
abu_bua
Comment la barre oblique inverse empêche-t-elle la correspondance des fichiers avec les caractères précédents dans leur nom de base? La chaîne \math.hdevrait être évaluée à math.h, mais je vois que cela \math.hévite les fichiers correspondants comme tgmath.het quadmath.h.
user001
1
FROM 'man Locate': Pour rechercher un fichier nommé exactement NAME (pas * NAME *), utilisez Locate -b '\ NAME' Parce que \ est un caractère de globalisation, cela désactive le remplacement implicite de NAME par * NAME *.
abu_bua
Merci. J'avais vérifié man locate, mais je suppose que j'ai une version différente de la locate(1)page de manuel (qui n'a pas une seule instance de \ ).
user001