Wo befinden sich Header-Dateien für GCC?

10

Ich möchte einige Header-Dateien wie math.hund graphic.hfür manuell hinzufügen, gccweiß aber nicht, wo ich sie ablegen soll.

Chirag Soni
quelle

Antworten:

13

Schauen Sie zuerst in /usr/includeoder /usr/local/include.

Wenn Sie dort nichts finden, versuchen Sie:

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

Dieser Befehl fragt gcc, welchen C ++ - Präprozessor er verwendet, und fragt dann den Präprozessor, nach dem er sucht.

Sie erhalten eine zuverlässige Antwort für Ihr spezifisches Setup.

Ebenso für den C-Präprozessor:

`gcc -print-prog-name=cc1` -v
Sachin Kamath
quelle
6

Wenn Sie nur wissen möchten, wo sich die Datei befindet, verwenden Sie einfach den Befehl find :

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

Möglicherweise müssen Sie Ihre Datenbank vorher zusätzlich aktualisieren:

sudo updatedb

Auf diese Weise suche ich meinen Header-Speicherort. Es ist viel schneller als mit dem Befehl find .

abu_bua
quelle
math.hsollte schon vorhanden sein. Beispiel:/usr/include/c++/7.3.0/math.h
Knud Larsen
Normalerweise fügen Sie einfach die lib mit dem gcc name.c -o name -lm
abu_bua
Wie wirkt sich der Backslash aus, um zu verhindern, dass Dateien mit vorhergehenden Zeichen in ihrem Basisnamen übereinstimmen? Die Zeichenfolge \math.hsollte ausgewertet werden math.h, aber ich sehe, dass \math.hübereinstimmende Dateien wie tgmath.hund vermieden werden quadmath.h.
user001
1
FROM 'man find': Um nach einer Datei mit dem genauen Namen NAME (nicht * NAME *) zu suchen, verwenden Sie collect -b '\ NAME'. Da \ ein globierendes Zeichen ist, wird das implizite Ersetzen von NAME durch * NAME * deaktiviert.
abu_bua
Vielen Dank. Ich hatte es überprüft man locate, aber ich glaube, ich habe eine andere Version der locate(1)Manpage (die keine Instanz von hat \ ).
user001