Moin, mal ne Linux-Spezifische frage... Ich möchte unter Linux etwas selbst kompilieren (configure, make, make install), will/muss aber einige Bibliotheken nur lokal installieren. Sprich ich habe spezielle Bibliotheken in meinem home Verzeichniss installiert. Wie teile ich dies dem configure-Script mit? Ich habe irgendwie den LD_LIBRARY_PATH im Kopf... Wie müsste ich den setzen? Mal angenommen ich habe meine Bibliothek in /home/user/localbib/lib/meinelib und die zugehörigen header in /home/user/localbib/include/meinelib... Was muss ich dann tun, damit configure, make, make install funktioniert? Ich hoffe ich habe mich verständlich ausgedrückt...
LD_LIBRARY_PATH betrifft nur den Laufzeitlinker, um ihm mitzuteilen wo er die shared libs suchen soll. Wenn du ./configure ausführst und den output (etwas weiter unten) durchliest, findest du vielleicht Optionen die zu bestimmten Libraries verweisen können, wenn diese woanders liegen. Könnte zB so aussehen --with-qt=... Dann rufst du es so auf ./configure --with-qt=/myqtplace Manchmal klappt es, manchmal aber auch nicht. Je nachdem wie plattformfest die make-Skripte geschrieben sind, ob alle binutils sauber arbeiten, etc. Mit der Zeit wächst mehr und mehr Erfahrung. Viel Erfolg!
Also wie dies mit dem configure-Script aussieht, weiß ich nicht, ich arbeite nur mit Makefile. Bei den Makefiles ist die Option '-ldl' wichtig. http://tldp.org/HOWTO/Program-Library-HOWTO/more-examples.html ...siehe Beispiel unten. Gruß Marvol
>Also wie dies mit dem configure-Script aussieht, weiß ich nicht, ich >arbeite nur mit Makefile. Bei den Makefiles ist die Option '-ldl' >wichtig. Wenn man nur eine Plattform untersützen möchte (die eigene zB ;) dann kann man direkt Makefiles schreiben. configure erstellt hingegen Makefiles on-the-fly nachdem es deine Plattform inspiziert hat. Rein empirisch klappt das bei mir in 50% der Fälle. -ldl wird wohl für "libary dynamic linker" stehen. Wie gesagt, korrigiert mich wenn ich was falsches sage, braucht man nicht LD_LIBRARY_PATH zu benutzen. Man kann auch andere libs static in sein executable mitaufnehmen. Davon sollte man aber nur in security und recovery Programmen Gebrauch machen, die möglichst keine Abhängigkeiten haben sollen.
noch eine Methode wäre, entweder über export CFLAGS="-I /headerpath -L /libpath" oder über ./configure CFLAGS="-I /headerpath -L /libpath" die Umgebung anzupassen. Manchmal arbeitet configure diese Parameter mit ein. Sie werden dann weiter an den Compiler gegeben. Auch das funktiniert in 50% der Fälle. Wenn ich make besser können würde, sollte die Erfolgsquote deutlich besser sein.
Ich habe die Umgebungsvariable CFLAGS angepasst... Das hat bisher Funktioniert... Danke für die Antworten, werde auf jeden Fall alles im Hinterkopf behalten für die nächsten Probleme ;)
Eventuell musst Du dann auch deine ld.so.conf anpassen ODER LD_LIBRARY_PATH immer zur Ausfuehrungszeit gesetzt haben ODER beim Kompilieren -Wl,--rpath= benutzen....
ja, ich habe noch LD_LIBRARY_PATH angepasst... Allmählich steige ich durch... Mal sehen ob er nun auch ordentlich baut :)
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.