it-swarm-ru.tech

Какие каталоги GCC по умолчанию включают в себя?

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

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

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

105
Raxvan

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

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

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

148
Ihor Kaharlichenko

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

$ 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 ++ титульный лист .

30
abyss.7

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

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

2
Jesse Cohen

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

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

0
Daniele Testa