Crosscompiler Frage

Gast #4453525
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
Gast #4461660
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
Gast #4461665
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

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