Schlagwort-Archive: sh4

HowTo – STLinux Toolchain (sh4) selbst erstellen

Problem:
Ich möchte für meinen Receiver etwas kompilieren.
Folgende relevante Systeminfos habe ich vom Receiver:

hostname:~# uname -r
2.6.32.59_stm24_0211

Dazu benötige ich also die sh4 Toolchain von STLinux.

Lösung:
Ich lade die ISO mit der STLinux Toolchain runter, mounte das ISO File, generiere mittels alien aus allen im ISO befindlichen *.rpm Dateien entsprechende *.tgz Dateien. Im Anschluss entpacke ich alle *.tgzs und habe alle notwenigen Dateien um CrossCompiles durchzuführen.

Wichtig: Das mitgelieferte Install-Script bietet zwar einen Schalter für die Installation unter Debian, jedoch funktionierte dieses nicht unter Debian Sid und wirft entsprechend Fehler. Ich möchte behaupten, dass die hier eingesetzte Methode die Bessere ist. Schliesslich wird damit Paketsystem-Inkonsistenzen vorgebeugt und ist sehr einfach zu handeln.

UPDATE: STLinux-2.4-sh4-20140404.iso ist verfügbar! Bitte entsprechend anpassen! 😉


# installation von dependencies (evtl ist das mehr als zwingend nötig)
sudo apt-get install alien fakeroot
# ISO runterladen
wget ftp://ftp.stlinux.com/pub/stlinux/2.4/iso/STLinux-2.4-sh4-20121121.iso -O /tmp
# Mount Ziel erstellen
mkdir /tmp/loop
# mounten der ISO
sudo mount -o loop,ro /tmp/STLinux-2.4-sh4-20121121.iso /tmp/loop
# Arbeitsordner für alien erstellen und dahin wechseln
mkdir -p /tmp/alien/TGZ && cd /tmp/alien/TGZ
# alle in der ISO befindlichen RPMs zu TGZs wandeln - tip: get a beer!
find /tmp/loop/* -name *.rpm -exec fakeroot alien -t {} ;
# Verzeichniswechsel nach /tmp/alien
cd /tmp/alien
# entpacken aller generierten TGZs
find /tmp/alien/TGZ -name '*.tgz' -exec tar xvzf {} ;
# Toolchain ans gewünschte Ziel tranferieren, in meinem Fall /opt/toolchains
sudo mv /tmp/alien/opt/STM/STLinux-2.4 /opt/toolchains
# OPTIONAL: Packen der Toolchain um diesen Vorgang nicht nochmal wiederholen zu müssen 😉
sudo tar -cvzf Toolchain-STLinux-2.4-sh4-20121121.tgz -C /opt/toolchains STLinux-2.4

Usecase: Ich hab mir ein einfaches Bashscript für den Buildprozess erstellt und exportiere dort die entsprechenden Variablen.

# erst die exports
export CC="sh4-linux-gcc"
export CXX="sh4-linux-g++"
export PATH=$PATH:/opt/toolchains/STLinux-2.4/devkit/sh4/bin
export TOOLCHAIN=/opt/toolchains/STLinux-2.4/devkit/sh4
# und hier wird der Build durchgeführt
make V=1 CROSS=$TOOLCHAIN/bin/sh4-linux-

Ich hoffe damit kann jmd etwas anfangen, Erfahrungen und Kommentare sind hierzu ausdrücklich erwünscht! 😉