168 votes

Quels sont les répertoires par défaut du CCAG ?

Lorsque je compile un fichier source très simple avec gcc, je n'ai pas besoin de spécifier le chemin vers standard include des fichiers tels que stdio ou stdlib.

Comment GCC sait-il comment trouver ces fichiers ?

A-t-il le chemin /usr/include câblé à l'intérieur, ou il obtiendra les chemins à partir d'autres composants OS ?

243voto

Ihor Kaharlichenko Points 1659

Pour déterminer les chemins par défaut utilisés par gcc/g++, ainsi que leurs priorités, vous devez examiner la sortie des commandes suivantes :

  1. Pour C :
    gcc -xc -E -v -
  1. Pour C++ :
    gcc -xc++ -E -v -

Le mérite revient à l'équipe de Qt Creator.

50voto

abyss.7 Points 2540

Il y a une commande avec une sortie plus courte, qui permet de couper automatiquement les chemins d'inclusion des lignes, en commençant par un seul espace :

$ echo | gcc -Wp,-v -x c++ - -fsyntax-only
ignoring nonexistent directory "/usr/lib/gcc/x86_64-redhat-linux/4.8.2/include-fixed"
ignoring nonexistent directory "/usr/lib/gcc/x86_64-redhat-linux/4.8.2/../../../../x86_64-redhat-linux/include"
#include "..." search starts here:
#include <...> search starts here:
 /usr/lib/gcc/x86_64-redhat-linux/4.8.2/../../../../include/c++/4.8.2
 /usr/lib/gcc/x86_64-redhat-linux/4.8.2/../../../../include/c++/4.8.2/x86_64-redhat-linux
 /usr/lib/gcc/x86_64-redhat-linux/4.8.2/../../../../include/c++/4.8.2/backward
 /usr/lib/gcc/x86_64-redhat-linux/4.8.2/include
 /usr/local/include
 /usr/include
End of search list.

Le crédit va à la première page libc++.

3voto

Jesse Cohen Points 2663

Voici un article décrivant les chemins de recherche gcc : http://www.network-theory.co.uk/docs/gccintro/gccintro_21.html

En outre, vous pouvez spécifier des chemins de recherche supplémentaires avec le commutateur -I. Vous pouvez le faire à partir de la ligne de commande ou dans votre makefile.

0voto

Daniele Testa Points 943

Exécutez simplement ce qui suit pour lister les chemins de recherche par défaut :

$(gcc -print-prog-name=cc1) -v

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