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. Zitieren
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"? Zitieren
TheFinn Geschrieben 17. Januar 2008 Geschrieben 17. Januar 2008 Moin! 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. Zitieren
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. Zitieren
TheFinn Geschrieben 21. Januar 2008 Geschrieben 21. Januar 2008 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. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.