Herausfinden, was der GCC-Include-Pfad ist [duplicate]

Lesezeit: 1 Minute

Ich versuche, die programmgesteuert zu finden #include Pfad unter Linux, was, wie ich es verstehe, in der Praxis bedeutet, das zu finden, wofür GCC es hält. (Stimmt das wirklich? Wie macht Clang das?)

Entsprechend http://gcc.gnu.org/onlinedocs/cpp/Search-Path.html einige der Komponenten betreffen die CPU-Architektur und die GCC-Version; vor allem letzteres scheint heikel zu sein; Ich nehme an, es könnte durch Laufen erhalten werden gcc --version und Analysieren der Ausgabe (bzw gcc -v), aber das wirkt bestenfalls unelegant und schlimmstenfalls zerbrechlich. Es könnte eine andere Option sein, dies aus dem eigenen Code heraus zu tun, vorausgesetzt, das eigene Programm wird mit GCC kompiliert, aber es würde abhängig von dieser Annahme erforderlich sein.

Was ist die empfohlene Vorgehensweise?

Benutzeravatar von caf
Café

Der Befehl

echo | gcc -E -Wp,-v -

zeigt den verwendeten Include-Pfad an.

  • tut which gcc Befehl auf Bash macht das gleiche?

    Benutzer2045557

    30. Juli 2013 um 7:38 Uhr

  • Ist der echo | notwendig?

    – Wilhelm Grau

    17. April 2014 um 15:37 Uhr

  • Das cpp -Wp,-v Befehl wartet auf eine Eingabe. Das echo | erspart dem Benutzer die Notwendigkeit Ctrl + D oder Ctrl + C zur Schale zurückkehren.

    – roganartu

    28. April 2014 um 3:12 Uhr

  • echo | cpp -xc++ -Wp,-v würde die C++ Include-Pfade geben.

    – legends2k

    16. März 2015 um 13:42 Uhr

  • gcc -E -Wp,-v -xc /dev/null <- Diese Version benötigt keine Shell (Use g++ -E -Wp,-v -xc++ /dev/null für C++)

    – minmaxavg

    25. Juli 2017 um 13:16 Uhr


Ich bin mir nicht sicher, was du mit der meinst empfohlen Möglichkeit, den Include-Pfad zu finden. Das Standard Der Weg ist wie folgt (für c und 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

  • Also, welcher ist der genaue Pfad?

    – ajaysinghnegi

    31. Dezember 2018 um 17:41 Uhr


  • @jay C und C++ haben unterschiedliche Include-Pfade, achten Sie auf den Programmnamen.

    – Euri Pinhollow

    1. März 2019 um 12:26 Uhr

1420840cookie-checkHerausfinden, was der GCC-Include-Pfad ist [duplicate]

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy