218 votes

Où gcc recherche-t-il les fichiers d'en-tête C et C ++?

Sur un système Unix, où gcc recherche-t-il les fichiers d'en-tête?

J'ai passé un peu de temps ce matin à chercher des fichiers d'en-tête système, alors j'ai pensé que ce serait une bonne information à avoir ici.

259voto

Drew Dormann Points 25025
 `gcc -print-prog-name=cc1plus` -v
 

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

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
 

48voto

robert Points 350

De plus, gcc recherchera les répertoires spécifiés après l’option -I .


36voto

diciu Points 18634

Vous pouvez créer un fichier qui tente d'inclure un en-tête de système bidon. Si vous exécutez gcc en mode prolixe sur une telle source, il listera tous les emplacements d'inclusion du système à la recherche du faux en-tête.

$ echo "#include <bogus.h> int main () {}"> tc; gcc -v tc; rm tc

[..]

 #include "..." search starts here:
#include <...> search starts here:
 /usr/local/include
 /usr/lib/gcc/i686-apple-darwin9/4.0.1/include
 /usr/include
 /System/Library/Frameworks (framework directory)
 /Library/Frameworks (framework directory)
End of search list.
 

[..]

 t.c:1:32: error: bogus.h: No such file or directory
 

2voto

user2844647 Points 1

On pourrait voir le chemin d’inclusion (supplémentaire) pour un programme C depuis bash en vérifiant ce qui suit:

 echo $C_INCLUDE_PATH
 

S'il est vide, il pourrait être modifié pour ajouter les emplacements d'inclusion par défaut, en:

 export C_INCLUDE_PATH=$C_INCLUDE_PATH:/usr/include
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X