Hallo zusammen, ich habe einen Raspberry Pi, für den ich unter Linux (Fedora 21, 64bit) entwickeln möchte. Dazu habe ich die Cross Compiler Toolchain (gcc-linaro-arm-linux-gnueabihf-raspbian-x64) installiert und unter Codeblocks eingerichtet. Ein kleines HalloWelt für die Konsole kann ich bauen und auf den Raspi übertragen, wo es auch läuft. Soweit alles grün. Nun will ich aber z.B. ncurses für meine Anwendung verwenden, und da hört es bei mir auf. Die ncurses-libs gibt es sowohl für den Raspi als auch für Fedora, aber wie richte ich es auf dem PC so ein, daß ich damit auch eine cross-compile hinbekomme? Ein include von ncurses.h bringt den Compiler zu der Erkenntnis, daß er ncurses.h nicht findet. Irgendwie auch klar, die ist wohl nicht Teil der Toolchain. Nur, wie bekomme ich die da rein? Vielen Dank schon mal, Michael
Moin, Ich weiss nicht, ob das das "amtliche Vorgehen" ist, aber ich wuerd' erst mal nachgucken, was fuer include-Pfade dein crosscompiler eingebaut hat - mittels: arm-bla-blupp-gcc -v hello.c Und dann ein ncurses aus den sourcen so crosscompilieren und/oder installieren, dass die ncurses header in dem "richtigen" include-Pfad des gcc auftauchen. Koennt' mir vorstellen, dass der cross-gcc evtl. sowas wie /opt/target/usr/include oder sowas eingebaut hat. Aber: Ich weiss nicht, ob das der "richtige" Weg ist. Gruss WK
Huhu, zum compilieren brauchst du natürlich die lib für den Raspberry und du musst in den Projektoptionen eintragen welche zusätzlichen Parameter er für gcc nutzen soll. Im Anhang habe ich ein Beispiel wie es für die Mysql libs gemacht werden musste. Mit Ncurses habe ich so noch nicht gearbeitet. Edit: Ich sehe gerade das man dort auch direkt libaries verlinken kann. Dann kannst du das ja einmal mit der so Datei von Ncurses versuchen
:
Bearbeitet durch User
Wo der Cross-Compiler nach seinem Zeugs sucht, findest Du über
1 | xxx-xxx-gcc -print-search-dirs |
raus. Da müssen anschließend auch die include-Files und Libraries hininstalliert werden, wenn Du die Pfade dahin nicht (per -I und -L) jedesmal extra angeben willst. Im "Pi-Fall" würde ich mir möglicherweise sogar überlegen, ob ich die entsprechenden Pi-Directories nicht sowieso per NFS am Host mounte, damit ich das Zeug nicht zweimal pflegen muß. Was das (Cross-) Compilieren der Libs angeht: die meisten (aber längst nicht alle) configure-Scripts verstehen das Argument --target= . Für die, die's nicht verstehen, bleibt bloß Doku lesen und am Ende möglicherweise rumtricksen. @Markus F. : wie kann man nur soo heißen 8-)
Markus F. (mfro) schrieb: > Im "Pi-Fall" würde ich mir möglicherweise sogar überlegen, ob ich die > entsprechenden Pi-Directories nicht sowieso per NFS am Host mounte, > damit ich das Zeug nicht zweimal pflegen muß. Wenn auf den Target eh schon die Header installiert sind (die Librarys sind ja sowieso nötig), dann könnte man auch gleich dort kompilieren. Aber ich nehme mal an, das Target soll mit möglichst wenig Installationspaketen "verseucht" werden.
Konrad S. schrieb: > Markus F. (mfro) schrieb: >> Im "Pi-Fall" würde ich mir möglicherweise sogar überlegen, ob ich die >> entsprechenden Pi-Directories nicht sowieso per NFS am Host mounte, >> damit ich das Zeug nicht zweimal pflegen muß. > > Wenn auf den Target eh schon die Header installiert sind (die Librarys > sind ja sowieso nötig), dann könnte man auch gleich dort kompilieren. So ein pi bietet zwar erstaunlich viel Computer für's Geld, Entwickeln macht darauf aber trotzdem keinen Spaß (zumindest, wenn ein "gescheiter" Rechner vorhanden ist). Was man aber machen kann, ist auf dem Host compilieren und vom pi aus auf dem NFS-gemounteten Entwicklungsverzeichnis das "make install" final ausführen. > Aber ich nehme mal an, das Target soll mit möglichst wenig > Installationspaketen "verseucht" werden. Das Target ist in dem Fall die SD-Karte des pi's. Da ist in zwei Minuten ein neues Image drauf, wenn man will.
Konrad S. schrieb: Erst mal vielen Dank an alle, die geantwortet haben. > Wenn auf den Target eh schon die Header installiert sind (die Librarys > sind ja sowieso nötig), dann könnte man auch gleich dort kompilieren. Könnte ich wohl, wenn da nicht das aber wäre ... :) > Aber ich nehme mal an, das Target soll mit möglichst wenig > Installationspaketen "verseucht" werden. Nichtg ganz, der Grund ist eigentlich der, daß ich gerne eine IDE wie Codeblocks verwenden möchte, ich auf den Pi im Moment nur Zugang per SSH habe. Und warum soll ich die kleine Beere mit einem grafischen System und Build-Aufgaben belasten, wenn direkt daneben eine im Vergleich richtig dicke Kiste steht? Und außerdem: so lerne ich vielleicht noch was über das saubere Vorgehen für Cross-Builds. Das kann ich sicher irgendwann noch mal brauchen :) @Markus F.: Die Sache mit NFS ist so simpel, da wäre ich nie drauf gekommen :D Das probiere ich mal. 42m
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.