www.mikrocontroller.net

Forum: PC-Programmierung Linux: Lokale Bibliotheken


Autor: Thorsten E. (nietzsche)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Daniel -------- (root)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Mar Vol (marvol)
Datum:

Bewertung
0 lesenswert
nicht 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.

http://tldp.org/HOWTO/Program-Library-HOWTO/more-e...

...siehe Beispiel unten.

Gruß
Marvol

Autor: Daniel -------- (root)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Daniel -------- (root)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Thorsten E. (nietzsche)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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 ;)

Autor: faustian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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....

Autor: Thorsten E. (nietzsche)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja, ich habe noch LD_LIBRARY_PATH angepasst...

Allmählich steige ich durch... Mal sehen ob er nun auch ordentlich baut 
:)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.