Где gcc ищет заголовочные файлы C++ и C?

171
задан MD XF 9 March 2017 в 18:54
поделиться

4 ответа

`gcc -print-prog-name=cc1plus` -v

Эта команда спрашивает gcc, который C++ включает препроцессор, который это использует, и затем просит что препроцессор, где это ищет.

Вы получите надежный ответ для своей определенной установки.

Аналогично, для препроцессор C :

`gcc -print-prog-name=cpp` -v
212
ответ дан Drew Dormann 23 November 2019 в 20:44
поделиться

Кроме того, gcc посмотрит в каталогах, определенных после -I опция.


36
ответ дан Kalin 23 November 2019 в 20:44
поделиться

Можно создать файл, который пытается включать поддельный системный заголовок. При выполнении gcc в подробном режиме на таком источнике это перечислит всю систему, включают местоположения, поскольку это ищет поддельный заголовок.

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

[..]

#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
24
ответ дан Jonathan Leffler 23 November 2019 в 20:44
поделиться

Раздел CPP из Руководство GCC указывает, что заголовочные файлы могут быть расположены в следующих каталогах:

GCC смотрит в нескольких различных местах для заголовков. В нормальной системе Unix, если Вы не сообщаете ему иначе, это будет искать заголовки, которые требуют с #include в:

 /usr/local/include
 libdir/gcc/target/version/include
 /usr/target/include
 /usr/include

Для программ C++, это также посмотрит в/usr/include/g ++-v3, сначала.

17
ответ дан Bill the Lizard 23 November 2019 в 20:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: