Beiträge von Oldsmobile
-
-
-
Hab's ausprobiert, und nach einem ellenlangen Hin- und Herkopieren von Headern, Bibliotheken etc. stehe ich vor einer crosskompilierten App, die anscheinend deutlich langsamer läuft als das native Kompilat vom g++ auf dem Raspi, doch immerhin funzt sie. Anscheinend ist der mit Raspbian Buster mitgelieferte g++ (Version 6.5.0) schon von der etwas älteren Art zu sein.
Danke Euch allen für Eure Tipps!
-
-
-
Dann muss ich aber make menuconfig mit der entsprechenden Compiler-Option nochmal drüberlaufen lassen, ja?
-
Zitat
Welche Version hat denn dein XGCC?
Zitat
Ich weiß nicht auf was du dich da genau beziehst mit menuconfig. CrossTools-ng?Ja.
Deine Docs zur libstdc++ kenne ich bereits.
Die Lib von Crosscompiler auf den Pi transferieren, ihren Standort in den LD_LIBRARY_PATH einzutragen und danach die SW zu starten, hilft übrigens nicht. Der Loader schient sie schlichtweg links liegen zu lassen:
Codepi@autoradio:/import/valen/autoradio $ export LD_LIBRARY_PATH=/import/valen/autoradio/lib:$LD_LIBRARY_PATH pi@autoradio:/import/valen/autoradio $ echo $LD_LIBRARY_PATH /import/valen/autoradio/lib: pi@autoradio:/import/valen/autoradio $ ./autoradio ./autoradio: /usr/lib/arm-linux-gnueabihf/libstdc++.so.6: version `GLIBCXX_3.4.26' not found (required by ./autoradio)
-
Zitat
Die saubere Lösung ist entweder den XGCC an das Zielsystem anzupassen
Das habe ich zu Beginn mit dem make menuconfig auch gemacht, wie ich den Crosscompiler eingerichtet habe. Oder gibt es da eine Option, um eine ältere Kombo von g++ und libstdc++ auszusuchen?
ZitatUnd die Version wird es nicht geben, weil eben ALLER C++-Code für das System mit der gebaut wird. Darum pinnt die den Compiler für ihre Lebenszeit auch fest.
Heißt das also, die 3.0.27er-Version für Raspbian wird es nie geben, weil sonst keine einzige vorher (gegen 3.0.25) kompilierte App mehr laufen wird? Dann müsste ich tatsächlich die Version vom Crosscompiler auf den Pi übertragen und beim Programmstart sagen, er soll diese Version nehmen und keine andere, ja?
-
Zitat
Aber: deine “Unzahl eingebundenen Bibliotheken” könnten ggf nicht damit harmonieren.
Genau das befürchte ich! Deswegen wäre es eine sauberere Lösung, gäbe es die 3.0.27er-Version ganz offiziell in einem Raspbian-Repo, doch aus irgendwelchem Grund hat das noch kein Maintainer gemacht.
-
Linken tut er ja (auf dem Ryzen, wo Version 3.0.27 für den Raspi vorhanden ist), nur auf dem Pi starten tut er nicht. Oder soll ich die libstdc++ vom Crosscompiler auf den Pi kopieren (ggf. in ein separates Verzeichnis) und dann beim Start des Programms sagen, dass es diese Version nehmen soll? Meinst Du, das wird funktionieren?
-
Zitat
Oder sollen die C++-Programme weiterhin auf dem Raspi laufen und statt auf dem Raspi zu compilieren soll auf dem Ryzen compiliert und gelinkt werden?
So ist es.
ZitatWas ist der genaue Grund, warum nun nicht mehr auf dem Raspi compiliert und gelinkt werden soll sondern stattdessen auf dem Ryzen? Schlechtere Performance des Raspi?
Genau das.
Ein simples Hello-World-Programm ist gelaufen. ABER: Spätestens, wenn ich Methoden aus der libstdc++ benötige, startet nichts mehr wegen des ABI-Versionskonfliktes.
NB: Eigentlich kenne ich den Grund und auch die (theoretische) Lösung, nur weiß ich nicht, wo ich Version 3.0.27 der libstdc++ für Raspbian Buster herkriegen soll.
-
rpi444 No use! Gleicher Fehler wie vorher.
@__deets__ Geistreicher Einfall, aber in meinem Fall leider völlig unpraktikabel, allein schon wegen der Unzahl eingebundener Bibliotheken.
-
Moin!
Ich würde gerne meine in C++ geschriebenen Raspi-Apps auf meinem Arbeitsrechner (Ryzen 7 unter OpenSuSE Leap 15.3) kompilieren, komme aber mit den x-tools nicht klar: Die C++ Standardbibliothek ist nicht die gleiche, weswegen mit x-tools erzeugte Kompilate auf dem Raspi nicht laufen:
Codepi@autoradio:/import/valen/autoradio $ ./autoradio ./autoradio: /usr/lib/arm-linux-gnueabihf/libstdc++.so.6: version `GLIBCXX_3.4.26' not found (required by ./autoradio)
NB: Die Version von GLIBCXX korreliert zwar mit der Version der libstdc++, ist aber nicht identisch: Beim Pi bekomme ich hier 3.4.25 als letzte unterstützte Version, während x-tools hier 3.4.27 angibt. Das wird dann wohl die ABI-Version sein.
Der Crosscompiler kommt mit der Version 6.0.27 der libstdc++, doch der Pi hat nur 6.0.25. Eine frischere Version ist für Raspbian Buster anscheinend nicht zu bekommen.
Was mache ich da? Die Biblio vom Crosscompiler downgraden ist meines Wissens keine gute Idee, weil sie immer auf eine bestimmte Compiler-Version abgestimmt ist. Danke!
-
-
-
-
Wieso selbst widersprochen? Ich habe jetzt die Tantal-Dinger zur Verfügung, die laut Euch für diesen Zweck eher schlecht taugen.
Als «audiophile» MKTs werden diese (tatsächlich sehr wuchtigen und teuren) Dinger angepriesen, doch die sind dann eher für echte HiFI-Anwendungen und weniger für den Auto-Bereich: https://www.wish.com/product/595f44…D_BwE&share=web
-
Solche sind aber nicht die richtigen, oder: https://www.reichelt.de/tonfrequenzelk…ce=display&&r=1
Tonfrequenz-Elkos heißen die und sind eigentlich für Freq-Weichen gedacht.
-
-