Forum: Mikrocontroller und Digitale Elektronik Cross-Compiling für Bananapi-Pro


von Vancouver (Gast)


Lesenswert?

Moin,

ich möchte eine Cross-Compiling-Umgebung für den bananapi-Pro aufsetzen. 
Das Host-System ist Ubuntu 14, auf dem BPro läuft ebenfalls Ubuntu 14 
(LUbuntu).

Hat jemand Tips/Ratschläge/Erfahrungen dazu/damit? Ich bin gerade dabei, 
mich in Scratchbox einzuarbeiten, das klingt recht vielversprechend. Hat 
das schon mal jemand benutzt?
Es geht nicht (nur) um den Kernel sondern hauptsächlich um Anwendungen, 
die üblicherweise einen Haufen ARM-compilierter Libraries dazulinken, 
und ich will natürlich nicht das ganze System parallel noch einmal auf 
dem Host pflegen müssen.

Comments are welcome.
Danke

von Peter II (Gast)


Lesenswert?

Vancouver schrieb:
> und ich will natürlich nicht das ganze System parallel noch einmal auf
> dem Host pflegen müssen.

du musst eh 2 Versionen pflegen. Einmal die ARM und einmal die x68.

von Vancouver (Gast)


Lesenswert?

> du musst eh 2 Versionen pflegen. Einmal die ARM und einmal die x68.

Ich meinte, ich will keine Kopie des ARM-Systems auf dem PC hosten, nur 
um das Cross-Compiling machen zu können. Die beiden ARM-Systeme müsste 
ich nämlich konsistent halten. Deswegen meine Idee mit der Scratchbox.

von Vancouver (Gast)


Lesenswert?

Noch niemand Cross-Compiling für einen Bananenkuchen gemacht?

von Planlos (Gast)


Lesenswert?

Vancouver schrieb:
> Es geht nicht (nur) um den Kernel sondern hauptsächlich um Anwendungen,
> die üblicherweise einen Haufen ARM-compilierter Libraries dazulinken,
> und ich will natürlich nicht das ganze System parallel noch einmal auf
> dem Host pflegen müssen.

Wenn dein Cross-Compiler auch linken soll, dann müssen die Libraries 
dort verfügbar sein.
Die Header sowieso.

Option, wenn es dir nicht so sehr ums Cross-Compilen an sich, als eher 
um schnelleres Compilieren geht: distcc.

auf dem BPi läuft dann je nach Config nur noch make und 
Präprozessor&Linker, das Compilieren kannst du auf einen ganzen 
Server-Park verteilen.

Die "Arbeitssklaven" brauchen dazu nur den nackten (arm-) Compiler, 
keine Header oder Libraries.

von Vancouver (Gast)


Lesenswert?

> Option, wenn es dir nicht so sehr ums Cross-Compilen an sich, als eher
> um schnelleres Compilieren geht: distcc.

Ja, darum geht es eigentlich. Kleinere Programme habe ich immer direkt 
auf dem BPi übersetzt, aber das Paket, das ich jetzt übersetzen will 
(GnuRadio), braucht in der x86-Version eine gute Stunde (mit 6 Cores). 
Das brauche ich auf dem BPi gar nicht zu probieren.

DistCC hatte ich noch garnicht auf dem Schirm... vielen Dank für den 
Tip.

von PittyJ (Gast)


Lesenswert?

Ich habe noch ein Mini-System mit einem Arm von TI.
Für diesen haben ich auf dem Linux-PC die Linaro-Toolchain installiert:

https://www.linaro.org/downloads/

Damit kann ich auch einem Intel Linux die Arm Programme kompilieren.
Es sind Gcc, Linker und einige Tools mit dabei. Auch die 
Basisbibliotheken sind integriert.

Müßte man mal ausprobieren, ob das auch für den Raspi passt.

von Peter II (Gast)


Lesenswert?

Vancouver schrieb:
> aber das Paket, das ich jetzt übersetzen will
> (GnuRadio), braucht in der x86-Version eine gute Stunde (mit 6 Cores).

sicher das dein System sonst ok ist? Der Linux kernel braucht nicht mal 
nur 20min mit einen Kern auf meinem System.

Ist GnuRadio wirklich "groß"?

von Vancouver (Gast)


Lesenswert?

> sicher das dein System sonst ok ist? Der Linux kernel braucht nicht mal
> nur 20min mit einen Kern auf meinem System.

Hat mich auch gewundert. Keine Ahnung, warum GnuRadio so ein Act ist. 
Auf einem Dualcore-Notebook läuft das knappe 5 Stunden, aber ich glaube 
da ist das Problem der knappe Speicher (swapping). Der "normale" 
Linux-Kernel braucht bei mir etwa 5 Minuten mit 6 Kernen, das passt 
ungefähr.

von Vancouver (Gast)


Lesenswert?

@PittyJ:

> Auch die Basisbibliotheken sind integriert.

Wenn es um den Kernel geht, reicht das vermutlich. Aber für Anwendungen 
braucht man noch alle möglichen weiteren Libraries (fftw, usb, png, weiß 
der Kuckuck was...)

von Hans Ulli K. (Gast)


Lesenswert?

Vancouver schrieb:
> @PittyJ:
>
>> Auch die Basisbibliotheken sind integriert.
>
> Wenn es um den Kernel geht, reicht das vermutlich. Aber für Anwendungen
> braucht man noch alle möglichen weiteren Libraries (fftw, usb, png, weiß
> der Kuckuck was...)

Da hast du aber was vor ...
1
[ebuild  N     ] net-wireless/gnuradio-3.7.8:0/3.7.8::gentoo to /usr/armv7a-hardfloat-linux-gnueabi/ USE="alsa analog audio digital filter qt4 utils -atsc -channels -doc -dtv -examples -fcd -fec -grc -jack -log -noaa -oss -pager -performance-counters -portaudio -sdl {-test} -trellis -uhd -vocoder -wavelet -wxwidgets -zeromq" PYTHON_TARGETS="python2_7"

nehme ich mal QT weg dann  sind es ca.
1
USE="-qt4" emerge-armv7a-hardfloat-linux-gnueabi -p gnuradio | wc -l
2
3
The following USE changes are necessary to proceed:
4
 (see "package.use" in the portage(5) man page for more details)
5
# required by sci-libs/scipy-0.16.0::gentoo
6
# required by net-wireless/gnuradio-3.7.8::gentoo[filter]
7
# required by gnuradio (argument)
8
>=dev-python/numpy-1.9.2 lapack
9
75
weil da dev-python/numpy unmasked werden muss.

Schaue mal auf
https://wiki.debian.org/ArmHardFloatPort
da hast du weniger Arbeit (für einen Anfänger) in Cross Compiling

von Vancouver (Gast)


Lesenswert?

> Da hast du aber was vor ...

Ja, ich weiß, das ist ein dicker Brocken. Aber ich brauche nicht alles 
davon, der BPi soll sozusagen als GnuRadio-Server arbeiten, also nur die 
Signalverarbeitung machen. Damit fällt das ganze QT-Zeug weg, weil es 
keine GUI gibt, und den Audio-Kram brauche ich auch nur zum Teil. Evtl 
kann ich auch auf Teile der Python-Module verzichten, da bin ich noch 
nicht ganz durchgestiegen.

> Schaue mal auf
> https://wiki.debian.org/ArmHardFloatPort


Super Tip, danke! Das schaue ich mir mal an.

Ich sehe schon, das war eine sehr gute Idee hier zu posten.

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.