Forum: PC-Programmierung Crosscompiler Frage


von Werner (Gast)


Lesenswert?

Hallo,

ich möchte unter Ubuntu mit installiertem arm-linux-gnueabi-Compiler 
eine Blibliothek übersetzen:

./configure --host=arm-linux-gnueabi --prefix=/usr/arm-linux-gnueabi

Die Bibliothek verwendet intern die stdlibc++ und linkt diese dynamisch. 
Muss ich dem Crosscompiler noch sagen welche libstdc++ er nehmen soll 
(also z.B. nicht ausversehen die des Hosts, das wäre ein x86 Linux). 
Beim Ausführen des fertigen Programms auf dem Zielsystem welches die 
übersetzte Bibliothek verwendet passiert nämlich folgendes:

/usr/lib/arm-linux-gnueabi/libstdc++.so.6: version `GLIBCXX_3.4.21' not 
found (required by ./test)
./test: /usr/lib/arm-linux-gnueabi/libstdc++.so.6: version 
`GLIBCXX_3.4.21' not found (required by 
/usr/lib/arm-linux-gnueabi/libconfig++.so.9)

Werner

von Werner (Gast)


Lesenswert?

...habe wohl das Problem gefunden; die libstdc++ und auch libc auf dem 
Host ist neuer als auf dem Zielsystem. Wie man diese auf dem Ziel system 
aktualisiert konnte ich noch nicht herausfinden...

von Werner (Gast)


Lesenswert?

...und ist es möglich eine dynamisch linkbare Bibliothek (*.so...) so zu 
kompiliern dass von dieser benötigte Bibliotheken (z.B. libstdc++) 
statisch in die Bibliothek mit eingelinkt werden?

Werner

von Dr. Sommer (Gast)


Lesenswert?

Werner schrieb:
> ...und ist es möglich eine dynamisch linkbare Bibliothek (*.so...)
> so zu
> kompiliern dass von dieser benötigte Bibliotheken (z.B. libstdc++)
> statisch in die Bibliothek mit eingelinkt werden?
Nein, denn dynamische Bibliotheken "können mehr" als statische und 
können daher nicht einfach statisch gelinkt werden. Von der libgcc und 
die libstdc++ gibt es aber statische Varianten, die man statisch in ein 
Programm/Dynamic Library linken kann, mithilfe der Linker-Optionen 
"-static-libstdc++" und "-static-libgcc".
Siehe https://gcc.gnu.org/onlinedocs/gcc/Link-Options.html

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Es gibt von vielen Bibliotheken statische Varianten.

Statisches Linken wird durch -static auf der Kommandozeile angefordert.

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
Noch kein Account? Hier anmelden.