Gdzie znajdują się pliki nagłówkowe dla GCC?

10

Chcę ręcznie dodać niektóre pliki nagłówkowe, takie jak math.hi graphic.hdla, gccale nie wiem, gdzie je umieścić.

Chirag Soni
źródło

Odpowiedzi:

13

Najpierw spójrz na /usr/includelub /usr/local/include.

Jeśli nic tam nie znajdziesz, spróbuj:

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

To polecenie pyta gcc, jakiego używa preprocesora C ++, a następnie pyta, czy preprocesor, w którym szuka, obejmuje.

Otrzymasz wiarygodną odpowiedź na swoją konkretną konfigurację.

Podobnie w przypadku preprocesora C:

`gcc -print-prog-name=cc1` -v
Sachin Kamath
źródło
6

Jeśli chcesz tylko wiedzieć, gdzie znajduje się plik, po prostu użyj polecenia locate :

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

Być może musisz jeszcze zaktualizować bazę danych przed:

sudo updatedb

W ten sposób szukam mojej lokalizacji nagłówków. Jest to znacznie szybsze niż użycie polecenia find .

abu_bua
źródło
math.hpowinien już być obecny. Przykład:/usr/include/c++/7.3.0/math.h
Knud Larsen,
Normalnie po prostu dołączasz bibliotekę lib do nazwy gcc. C -o nazwa -lm
abu_bua
Jak działa ukośnik odwrotny, aby zapobiec dopasowywaniu plików przez poprzedzające znaki w ich nazwie basename? Ciąg \math.hpowinien oceniać na math.h, ale widzę, że \math.hunika dopasowania plików takich jak tgmath.hi quadmath.h.
user001
1
OD 'man locate': Aby wyszukać plik o nazwie dokładnie NAZWA (nie * NAME *), użyj locate -b '\ NAME' Ponieważ \ jest znakiem globującym, wyłącza to domyślną zamianę NAME na * NAME *.
abu_bua
Dzięki. Sprawdziłem man locate, ale locate(1)wydaje mi się, że mam inną wersję strony man (która nie ma jednego wystąpienia \ ).
user001