Crosscompiler: Library auf target installieren

Gast #4018505
Lesenswert?
• ▲
▼
Hallo,

ich kann erfolgreich eine Bibliothek mit meinem Crosscompiler 
compilieren (.a Datei), und diese ebenfalls auf dem Crosscompiler 
statisch in ein Projekt zu linken. Wie kann ich die Blibliothek auf dem 
Zielsystem "installieren", so dass ich die Bibliothek dynamisch linken 
kann?

Gruß
Stefan
Gast #4018697
Lesenswert?
• ▲
▼
Ok, war offenbar zu allgemein formuliert; Dateisystem und entsprechender 
Programmlader sind vorhanden. Mit ldd <meinprogramm> kann ich auch die 
benötigten Bibliothek sehen (über die .so Dateien). Aber wie kann ich 
meine Blibliothek im Zielsystem "registrieren" dass Sie der 
Programmlader findet?
#4018717
Lesenswert?
• ▲
▼
Zunächst muß statt der .a (static lib) mal eine .so (shared) her. 
Irgendwo in deiner Kommandozeile sollte dazu (mindestens) "-shared" 
auftauchen.

Das Ergebnis kommt muß dann irgendwie auf dein Zielsystem. Ist ja 
anscheinend Linux, dann kannst Du das per NFS machen (dann mußt Du die 
lib beim Entwickeln/Testen nicht jedesmal rüber kopieren).

Auf dem Zielsystem muß der Lader nur noch wissen, wo die shared lib 
liegt. Wenn sie in den Standardpfaden nicht zu finden ist, muß man ihm 
das per LD_LIBRARY_PATH eben klarmachen.

"Registriert" muß da nix werden.
Gast #4018767
Lesenswert?
• ▲
▼
Ja, der Crosscompiler hat beim Compilieren der Bibliothek folgende 
Dateien erzeugt:

meinelib.so.3
meinelib.so
meinelib.la
meinelib.so.3.2.10
meinelib.a

Wie das genau funktinoiert habe ich noch nicht genau verstanden, aber 
eine oder mehrere von den so Dateien werdens wohl dann sein. Findet der 
Loader die dynamischen Blibliotheken automatisch wenn diese sich im 
Verzeichnis des Hauptprogrammes befinden?
#4018814
Lesenswert?
• ▲
▼
Na, dann hast Du ja schon die halbe Miete.

Alles, was ein .so im Namen hat, muß auf's Target. Der Lader lädt "von 
alleine" nur von den ("vertrauenswürdigen") Verzeichnissen, die in 
/etc/ld.so.conf aufgeführt sind (üblicherweise /lib, /usr/lib und 
/usr/local/lib). Und das nur, wenn der Shared Library Cache aktuell ist 
(ldconfig -a).

Von woanders holt er Shared Libraries nur, wenn man ihn das (über die 
Umgebungsvariable LD_LIBRARY_PATH) anweist.

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.