96 votes

Découvrir quel est le chemin d'inclusion GCC

Je tente de trouver de manière programmée le chemin #include sur Linux, ce qui signifie en pratique trouver ce que GCC considère. (Est-ce tout à fait vrai? Comment Clang le fait-il?)

Selon http://gcc.gnu.org/onlinedocs/cpp/Search-Path.html certaines composantes impliquent l'architecture du CPU et la version de GCC; cette dernière en particulier semble délicate; je suppose qu'elle pourrait être obtenue en exécutant gcc --version et en analysant la sortie (ou gcc -v), mais cela semble être aussi peu élégant que fragile. Le faire depuis son code en supposant que son programme est compilé avec GCC pourrait être une autre option, mais cela nécessiterait de dépendre de cette hypothèse.

Quelle est la méthode recommandée pour le faire?

187voto

caf Points 114951

La commande

echo | gcc -E -Wp,-v -

affichera le chemin d'inclusion en cours d'utilisation.

28voto

devnull Points 45016

Je ne suis pas sûr de ce que vous entendez par la manière recommandée de trouver le chemin d'inclusion. La manière standard est la suivante (pour c et c++) :

$ `gcc -print-prog-name=cc1` -v
ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../x86_64-linux-gnu/include"
#include "..." search starts here:
#include <...> search starts here:
 /usr/lib/gcc/x86_64-linux-gnu/4.7/include
 /usr/local/include
 /usr/lib/gcc/x86_64-linux-gnu/4.7/include-fixed
 /usr/include
End of search list.
^C
$ `gcc -print-prog-name=cc1plus` -v
ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../x86_64-linux-gnu/include"
#include "..." search starts here:
#include <...> search starts here:
 /usr/include/c++/4.7
 /usr/include/c++/4.7/x86_64-linux-gnu
 /usr/include/c++/4.7/backward
 /usr/lib/gcc/x86_64-linux-gnu/4.7/include
 /usr/local/include
 /usr/lib/gcc/x86_64-linux-gnu/4.7/include-fixed
 /usr/include
End of search list.
^C

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