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


10

Я хочу вручную добавить некоторые заголовочные файлы, такие как math.hи graphic.hдля, gccно не знаю, где их разместить.

Ответы:


13

Сначала взгляните на /usr/includeили /usr/local/include.

Если вы ничего не найдете там, попробуйте:

`gcc -print-prog-name=cc1plus` -v

Эта команда спрашивает gcc, какой препроцессор C ++ он использует, а затем спрашивает, какой препроцессор там, где он ищет, включает.

Вы получите надежный ответ для вашей конкретной установки.

Аналогично для препроцессора C:

`gcc -print-prog-name=cc1` -v

6

Если вы хотите знать только, где находится файл, просто используйте команду locate :

locate -b '\math.h'
locate -b '\graphics.h'

Может быть, у вас есть дополнительные, чтобы обновить базу данных до:

sudo updatedb

Вот так я ищу местоположение моих заголовков. Это намного быстрее, чем с помощью команды find .


math.hдолжен уже присутствовать. Пример:/usr/include/c++/7.3.0/math.h
Кнуд Ларсен

Обычно вы просто включаете библиотеку с gcc name.c -o name
-lm

Как обратная косая черта препятствует сопоставлению файлов с предшествующими символами в их базовом имени? Строка \math.hдолжна вычисляться до math.h, но я вижу, что \math.hизбегает сопоставления файлов, таких как tgmath.hи quadmath.h.
user001

1
ОТ 'man locate': чтобы найти файл с именем точно NAME (не * NAME *), используйте locate -b '\ NAME', поскольку \ является символом-заглушки, это отключает неявную замену NAME на * NAME *.
abu_bua

Спасибо. Я проверил man locate, но я думаю, у меня есть другая версия locate(1)справочной страницы (у которой нет одного экземпляра \ ).
user001
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.