Какие каталоги GCC по умолчанию включают в себя? - PullRequest
108 голосов
/ 13 февраля 2011

Когда я компилирую очень простой исходный файл с помощью gcc, мне не нужно указывать путь к стандартным включаемым файлам, таким как stdio или stdlib.

Как GCC знает, как найти эти файлы?

Имеет ли он встроенный путь /usr/include, или он получит пути от других компонентов ОС?

Ответы [ 4 ]

150 голосов
/ 12 июля 2011

Чтобы выяснить пути по умолчанию, используемые gcc / g++, а также их приоритеты, необходимо проверить вывод следующих команд:

  1. Для C :
    gcc -xc -E -v -
  1. Для C ++ :
    gcc -xc++ -E -v -

Кредит предоставляется Команда Qt Creator .

30 голосов
/ 07 ноября 2013

Есть команда с более коротким выводом, которая позволяет автоматически вырезать включаемые пути из строк, начиная с одного пробела:

$ 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.

Кредит идет на главную страницу libc ++ .

2 голосов
/ 13 февраля 2011

Вот статья, описывающая пути поиска gcc: http://www.network -theory.co.uk / docs / gccintro / gccintro_21.html

Кроме того, вы можете указать дополнительный поискпути с переключателем -I.Вы можете сделать это из командной строки или в вашем make-файле.

0 голосов
/ 18 июня 2019

Просто запустите следующее, чтобы получить список путей поиска по умолчанию:

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

...