Linux: Lokale Bibliotheken

#1679164
Lesenswert?

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...
#1679174
Lesenswert?

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!
#1679324
Lesenswert?

>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.
#1679330
Lesenswert?

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.

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