C: Linker und Bibliotheken

Gast #4297376
Lesenswert?

Woher weiss der Linker welche Bibliotheksdateien (d.h. .so oder .a 
-Files)
er einbinden muss und wo diese gespeichert sind, wenn ich nur eine 
bestimmte Headerdatei in das Hauptprogramm includiere? Die bereits 
übersetzten Bibliotheken haben doch andere Namen als die Headerfiles.
#4297383
Lesenswert?

Dieter schrieb:
> Woher weiss der Linker welche Bibliotheksdateien (d.h. .so oder .a
> -Files) er einbinden muss und wo diese gespeichert sind, wenn ich nur eine
> bestimmte Headerdatei in das Hauptprogramm includiere?

Gar nicht, deshalb muß man dem Linker beides explizit nennen.

> Die bereits übersetzten Bibliotheken haben doch andere Namen als die
> Headerfiles.

Ja. #include hat auch mit dem Linker erstmal nichts zu tun. Das ist eine 
reine Compiler-Sache. .so- und .a-Files dagegen interessieren den 
Compiler nicht.
Gast #4297399
Lesenswert?

Woher weiß ich welche Information der Linker zur Bibliothek benötigt, 
wenn ich z.B. #include <gtk/gtk.h> im Hauptprogramm includiere?
Zum Kompilieren benötigt mann folgenden Befehl:
1
gcc gtkhello.c -o gtkhello `pkg-config gtk+-3.0 --cflags --libs`

Wie heißen in diesem Fall die .so bzw. .a -Bibliothek-Files? Wo sind 
diese gespeichert?
#4297416
Lesenswert?

Dieter schrieb:
> Woher weiß ich welche Information der Linker zur Bibliothek benötigt,
> wenn ich z.B. #include <gtk/gtk.h> im Hauptprogramm includiere?
> Zum Kompilieren benötigt mann folgenden Befehl:
> gcc gtkhello.c -o gtkhello `pkg-config gtk+-3.0 --cflags --libs`
> Wie heißen in diesem Fall die .so bzw. .a -Bibliothek-Files? Wo sind
> diese gespeichert?

Das wird in diesem Fall von pkg-config bereitgestellt. Wenn du wissen 
willst, was das genau ist, kannst du es auch einfach direkt aufrufen.
1
pkg-config gtk+-3.0 --libs
Gast #4297417
Lesenswert?

Dieter schrieb:
> gcc gtkhello.c -o gtkhello `pkg-config gtk+-3.0 --cflags --libs`
> Wie heißen in diesem Fall die .so bzw. .a -Bibliothek-Files?
Gucks dir doch einfach an. Nicht umsonst gibst du dem pkg-config die 
--libs-Option mit.

> Wo sind
> diese gespeichert?
Die Standard-Suchpfade verrät dir die Man-Page des Linkers.
#4297462
Lesenswert?

Dieter schrieb:
> Zum Kompilieren benötigt mann folgenden Befehl:
> gcc gtkhello.c -o gtkhello `pkg-config gtk+-3.0 --cflags --libs`
> Wie heißen in diesem Fall die .so bzw. .a -Bibliothek-Files? Wo sind
> diese gespeichert?

Wenn Du diese Frage noch selbst stellen musst, fehlt Dir elementares 
Grundlagenwissen in Unix/Linux. Das solltest Du dir zuerst mal aneignen, 
z.B. mittels totem Holz.
#4297508
Lesenswert?

dieter schrieb:
> Für was steht "-lgtk-3"? Müsste diese Datei nicht libgtk-3 heißen?

Die Datei wird libgtk-3.so oder libgtk-3.a heißen. Das lib und die 
Endung werden aber dem Linker nicht mit angegeben.

> Wo ist diese Datei gespeichert?

Du weißt, daß es auch unter Linux Programme gibt, mit denen man nach 
Dateien suchen kann? Heißer Kandidat wird /usr/lib sein.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren