Где находятся C заголовочные файлы в g cc 7? - PullRequest
0 голосов
/ 14 января 2020

На сервере linux, который имеет старую версию g cc (4.4.7), я собрал g cc 7.4.0 из исходного кода и установил его в каталоге внутри дома.

Теперь я не уверен, как его использовать. Каталог содержит несколько подкаталогов, один из которых называется «include». Внутри него есть папка с именем "c ++". Он включает в себя еще одну папку с именем "7.4.0". Но где заголовочные файлы C? Установщик установил их в другом месте? Какой адрес мне следует указать с параметром -I при компиляции программы C?

К сожалению, у меня больше нет исходного каталога g cc.

1 Ответ

1 голос
/ 07 февраля 2020

Но где находятся C заголовочные файлы?

Вы можете узнать, где g cc ожидает их по

echo '#include <stdio.h>' | gcc -xc - -H -v -fsyntax-only

Часть -v будет печатать пути поиска, такие как

#include "..." search starts here:
#include <...> search starts here:
 /home/...
 /usr/local/include
 ...

Часть -H будет печатать, какие заголовочные файлы в действительности используются:

. /usr/include/stdio.h
.. /usr/include/x86_64-linux-gnu/bits/libc-header-start.h
... /usr/include/features.h
etc.

Какой адрес я должен предоставить опцию -I при компиляции программы C?

Пути, где расположены заголовки вашего проекта C, если они не находятся в текущем каталоге. Для простых проектов вам не нужно -I: при компиляции module.c будет найдено #include "module.h", если оба файла находятся в одном каталоге.

Правильный вариант для указания дополнительного пути к системному заголовку: -isystem однако, установка должна найти системные заголовки без какого-либо дополнительного взлома , то есть предполагаемые пути поиска должны быть перечислены в #include <...> search starts here: и без установки -isystem.

Установщик установил их в другом месте? Реализации

lib c (такие как glib c или Newlib) не являются частью G CC, тогда как библиотека C ++ libstdc ++ - v3 размещена с G CC и создается, когда G CC настроен на --enable-languages=c++. Расположение C -библиотек и C -заголовков должно быть определено с помощью configure.

Для некоторых C -библиотек, таких как Newlib, G CC поддерживает сборки внутри дерева, чтобы эти целевые библиотеки будут содержаться в установке, и пути будут установлены соответствующим образом. Однако создание glib c гораздо сложнее.

...