Подтвердить что ты не робот

Каковы настройки GCC по умолчанию включают каталоги?

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

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

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

4b9b3361

Ответ 1

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

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

Кредит принадлежит команде Qt Creator.

Ответ 2

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

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

Кредит идет на libС++ на первой странице.

Ответ 3

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

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

Ответ 4

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

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