Де розміщені файли заголовків для 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
Кнуд Ларсен

Зазвичай ви просто включаєте lib з gcc name.c -o name -lm
abu_bua

Як діє зворотний нахил, щоб запобігти збігу файлів з попередніми символами в їх базовому імені? Рядок \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.