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


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

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

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

3 82

3 ответа:

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

  1. Для C:

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

    gcc -xc++ -E -v -
    

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

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

$ 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++ на главной странице.

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

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