Ответ 1
Чтобы выяснить пути по умолчанию, используемые gcc
/g++
, а также их приоритеты, вам необходимо изучить вывод следующих команд:
- Для C:
gcc -xc -E -v -
- Для C++:
gcc -xc++ -E -v -
Кредит принадлежит команде Qt Creator.
Когда я компилирую очень простой исходный файл с gcc, мне не нужно указывать путь к стандартным файлам include, таким как stdio или stdlib.
Как GCC знает, как найти эти файлы?
Имеет ли он путь /usr/include
, встроенный внутри, или он получит пути от других компонентов ОС?
Чтобы выяснить пути по умолчанию, используемые gcc
/g++
, а также их приоритеты, вам необходимо изучить вывод следующих команд:
gcc -xc -E -v -
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.
Кредит идет на libС++ на первой странице.
Вот статья, описывающая пути поиска gcc: http://www.network-theory.co.uk/docs/gccintro/gccintro_21.html
Кроме того, вы можете указать дополнительные пути поиска с помощью переключателя -I
. Вы можете сделать это из командной строки или в вашем файле.
Просто запустите следующее, чтобы получить список путей поиска по умолчанию:
$ (gcc -print-prog-name = cc1) -v