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.

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

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 .


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.