web-dev-qa-db-fra.com

Quels sont les répertoires d'inclusion par défaut de GCC?

Lorsque je compile un fichier source très simple avec gcc, je n'ai pas à spécifier le chemin d'accès aux fichiers d'inclusion standard tels que stdio ou stdlib.

Comment GCC sait comment trouver ces fichiers?

At-il le /usr/include chemin hardhired à l'intérieur, ou il obtiendra les chemins d'autres composants du système d'exploitation?

110
Raxvan

Afin de déterminer les chemins par défaut utilisés par gcc/g++, ainsi que leurs priorités, vous devez examiner le résultat des commandes suivantes:

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

Le crédit va à équipe Qt Creator .

154
Ihor Kaharlichenko

Il existe 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 libc ++ page de garde .

31
abyss.7

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

De plus, vous pouvez spécifier des chemins de recherche supplémentaires avec le -I _ commutateur. Vous pouvez le faire depuis la ligne de commande ou dans votre makefile.

1
Jesse Cohen

Il suffit d’exécuter ce qui suit pour répertorier les chemins de recherche par défaut:

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

0
Daniele Testa