Dove si trovano i file di intestazione per GCC?


10

Voglio aggiungere manualmente alcuni file di intestazione come math.he graphic.hper gccma non so dove metterli.

Risposte:


13

Per prima cosa dai un'occhiata a /usr/includeo /usr/local/include.

Se non trovi nulla lì, prova:

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

Questo comando chiede a gcc quale preprocessore C ++ sta usando, quindi chiede a quel preprocessore dove cerca include.

Riceverai una risposta affidabile per la tua configurazione specifica.

Allo stesso modo, per il preprocessore C:

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

6

Se vuoi solo sapere dove si trova il file, usa semplicemente il comando Locate :

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

Forse hai bisogno di aggiornare il tuo database prima di:

sudo updatedb

È così che cerco la posizione delle mie intestazioni. È molto più veloce dell'uso del comando find .


math.hdovrebbe già essere presente. Esempio:/usr/include/c++/7.3.0/math.h
Knud Larsen

Normalmente includi semplicemente la lib con gcc name.c -o name -lm
abu_bua

Come agisce la barra rovesciata per impedire la corrispondenza dei file con i caratteri precedenti nel loro nome di base? La stringa \math.hdovrebbe valutare math.h, ma vedo che \math.hevita la corrispondenza di file come tgmath.he quadmath.h.
user001

1
DA 'man Locate': per cercare un file chiamato esattamente NAME (non * NAME *), usa individuare -b '\ NAME' Dato che \ è un carattere sconvolgente, questo disabilita la sostituzione implicita di NAME con * NAME *.
abu_bua,

Grazie. Avevo controllato man locate, ma suppongo di avere una versione diversa della locate(1)pagina man (che non ha un'istanza di \ ).
user001
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.