Zakum Geschrieben 16. Januar 2008 Geschrieben 16. Januar 2008 Hi, ich muss mich erst einmal entschuldigen, ich weiß nicht genau, ob linken der richtige begriff ist. *rotwerd* Auf jeden Fall besteht folgendes Problem: Ich möchte mit meinem gcc Compiler ein Programm compilieren (soweit klingt ja noch alles ganz logisch ) Dabei muss ich eine C Bibliothek, die ich per #include im Quelltext eingebunden habe, und die nicht zum Standart-Zeug gehört, dem compiler per -lNameDerBibo mitteilen (erfüllt das den Tatbestand des Linkens? *verwirrt bin*) Nun, leider ist aber die Bibliothek meiner Wahl (COMPLEX.H) eine, die nicht installiert wird, wie andere, sondern einfach "rumliegt". Weiß vlt. jemand mit welchem Befehl ich die einbinden kann? Wenn ich es auf gewohnte weise versuche, dann wird mir nur mitgeteilt, dass der compiler complex.h nicht in /usr/bin/ld finden kann.
carstenj Geschrieben 16. Januar 2008 Geschrieben 16. Januar 2008 Hi, linken ist schon der richtige Begriff und ja, man macht das mit der Option -l. Allerdings ist die .h nur eine Headerdatei. Dazu muss es noch irgendwo eine entsprechende lib geben. Wo die liegt, weiss ich nicht. Was heisst denn "einfach rumliegt"?
TheFinn Geschrieben 17. Januar 2008 Geschrieben 17. Januar 2008 Moin! Zakum schrieb: Hi, ich muss mich erst einmal entschuldigen, ich weiß nicht genau, ob linken der richtige begriff ist. *rotwerd* Auf jeden Fall besteht folgendes Problem: Ich möchte mit meinem gcc Compiler ein Programm compilieren (soweit klingt ja noch alles ganz logisch ) Dabei muss ich eine C Bibliothek, die ich per #include im Quelltext eingebunden habe, und die nicht zum Standart-Zeug gehört, dem compiler per -lNameDerBibo mitteilen (erfüllt das den Tatbestand des Linkens? *verwirrt bin*) Nun, leider ist aber die Bibliothek meiner Wahl (COMPLEX.H) eine, die nicht installiert wird, wie andere, sondern einfach "rumliegt". Weiß vlt. jemand mit welchem Befehl ich die einbinden kann? Wenn ich es auf gewohnte weise versuche, dann wird mir nur mitgeteilt, dass der compiler complex.h nicht in /usr/bin/ld finden kann. man gcc Mit -L gibst Du Verzeichnisse an, in denen der Compiler (eigentlich: der Linker) zusätzlich zu den in /etc/ld.so.conf eingetragenen Verzeichnissen nach den mit -l angegebenen Bibliotheken suchen soll. Wenn Du diese lib also nur selten brauchst: -L Wenn Du sie häufiger brauchst: in einen der System-Bibliotheks-Pfade schmeißen (z.B. /usr/lib) oder ein eigenes Bibliotheks-Verzeichnis einrichten und in /etc/ld.so.conf eintragen (anschließend ldconfig nicht vergessen!) Ach ja: und mit -I gibts Du zusätzliche Verzeichnisse an, in denen nach Header Files gesucht wird.
Zakum Geschrieben 21. Januar 2008 Autor Geschrieben 21. Januar 2008 Tut mir Leid, dass ich so lange gebraucht habe, ziemlich viel zu tun! Danke auf jeden Fall für die ganzen Antworten, dass -I klingt ganz nach der Lösung meiner Wahl, ich hoffe ich kann bald positives berichten. Danke auch übrigens für den hinweis auf Unterschied: HeaderFile -> Bilbliothek, dass muss ich mir unbedingt genauer anschauen.
TheFinn Geschrieben 21. Januar 2008 Geschrieben 21. Januar 2008 Zakum schrieb: Danke auch übrigens für den hinweis auf Unterschied: HeaderFile -> Bilbliothek, dass muss ich mir unbedingt genauer anschauen. Keine schwarze Magie, dadurch wird einfach die Signatur (Deklaration, Schnittstelle) einer Funktion bzw. Bibliothek von ihrer Implementierung getrennt. Die Signatur steht im Header-File, die Implementierung (der Funktionsrumpf) in der Library. Die Schnittstelle einer Bibliothek hat oft eine längere Lebensdauer als ihre Implementierung, so kann letztere also optimiert werden, ohne von der Bibliothek abhängige Anwendungen ändern zu müssen.
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden