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

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