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