Unofficial Crosstool
Ich habe mir mal die Crosscompiler-Umgebung von Samr7 näher angeschaut. Die Installation verlief sehr einfach, anders als erwartet. Benutzt wurde als Testsystem Debian Etch. Es existiert aber auch ein vorbereitetes Paket für Cygwin oder es funktioniert auch unter Puppy Linux mit qemu unter Windows.
In Zusammenhang mit Anjuta ergibt das ganze schon eine nette Entwicklungsumgebung und reicht auch völlig aus, natürlich kann man auch Eclipse verwenden.
Samr7 Crosstool Installation
1. Benötigte Datein und Pakete
Pakete
bison flex patch wget byacc build-essential (gcc, g++, make) [autoconf automake libtool]
ezx-crosstool-0.6.tar.bz2 | http://lsb.blogdns.com/ezx-crosstool |
dev-ezx-0.2.0.tgz | http://lsb.blogdns.com/ezx-devkit |
ezx-lib.tar.gz | Libraries from Phone |
Libraries from Phone
cd /usr/lib tar zcvf /mmc/mmca1/ezx-lib.tar.gz *
2. Crosstool
a.) Zuerst wird unter /opt/ ein Verzeichnis als root angelegt z.B. "A780".
Von diesem Verzeichnis werden die Zugriffsrechte für den Benutzer geändert. Ab jetzt erfolgen die restlichen Schritte alle als User.
b.) Die Datei "ezx-crosstool-0.6.tar.bz2" in das Verzeichnis "/opt/a780" kopieren und entpacken.
tar xfvj ezx-crosstool-0.6.tar.bz2
In das neu entstandene Verzeichnis wechseln und das folgende build script ausführen. Dieses lädt weitere benötigte Datei aus dem Internet, patched diese und kompiliert sie. Dies dauert je nach Netzgeschwindigkeit und Prozessorleistung ziehmlich lange.
./build.sh
3. Development Kit
a.) Die Datein "dev-ezx-0.2.0.tgz" und "ezx-lib.tar.gz" in das Verzeichnis "/opt/a780" kopieren und entpacken.
tar xfvz dev-ezx-0.2.0.tgz tar xfvz ezx-lib.tar.gz -C /opt/a780/dev-ezx/lib/
Nun in folgendes Verzeichnis wechseln "/opt/a780/dev-ezx/moc" und das moc Program bauen.
make
4. Qmake (optional)
Optional kann man mit qmake ein Makefile erstellen. Dazu werden angepasste config Datein benötigt, sowie das Programm qmake.
Von den Motorolafans bekommt man die Konfigurationdatein passend für das Crosstool. Diese sind in der folgenden Datei enthalten "dev-ezx-0.2.0-qmake.tar.gz".
Link für Datei: help on getting ezx workingDes Weiteren wird qmake benötigt. Dafür einfach die QT3 Developmenttools installieren (qt3-dev-tools).
a.) Die Datei dev-ezx-0.2.0-qmake.tar.gz in das Verzeichnis /opt/a780/dev-ezx-0.2.0 kopieren und entpacken.
tar xfvz dev-ezx-0.2.0-qmake.tar.gz
b.) Danach installiert man qmake oder kopiert es sich von einem anderen Computer. Bei Debian liegt die Datei unter "/usr/bin/qmake-qt3". Diese wird in qmake umbenannt und wird in den folgenden Ordner abgelegt "/opt/a780/dev-ezx-0.2.0/qt/bin".
5. Helloworld-qmake
In der Datei "dev-ezx-0.2.0-qmake.tar.gz" ist auch ein Beispiel Programm. Um es zu kompilieren wechselt muss die "setenv.sh" angepasst werden. Diese liegt in dem selben Ordner von dem Helloworld Beispiel.
In diesem Beispiel muss das Crosstoolverzeichnis geändert werden von "CROSSTOOL_DIR=/opt/ezx-crosstool" nach "CROSSTOOL_DIR=/opt/a780/ezx-crosstool-0.6".
Nun kann das Helloworld Programm kompiliert werden.
source setenv.sh qmake helloworld.pro make
Um die Applikation kleiner und schneller zu machen strippen wir das Binary. Somit werden unnötige Teile aus der Datei entfernt, wie zum Beispiel die Debugsymbole.
arm-linux-strip helloworld
Jetzt wird die helloworld Datei einfach auf das Handy kopiert. Dafür empfehle ich das Programm Linuxftp. Mit dem Programm kann man Datein übertragen und gleichzeitig über Telnet verbunden sein; oder man kopiert es über ssh.
Über Telnet zu dem Speicherort der helloworld Datei wechseln. Zum Starten müssen vorerst noch die Umgebungsvariablen gesetzt werden also:
. /home/native/.profile ./helloworld
Natürlich kann man das auch auf dem Telefon direkt in einer Konsole ausführen. Das Resultat ist auf den folgenden Bildern zu sehen.
![]() |
![]() |
6. Tmake statt Qmake (optional)
Tmake in "/opt/a780/dev-ezx-0.2.0/qt" entpacken.
Link für Datei: tmake-1.13.tar.gztar xfvz tmake-1.13.tar.gz
Die Datein tmake und progen unter "/opt/a780/dev-ezx-0.2.0/qt/tmake-1.13/bin/" einfach in den folgenden Ordner verschieben "/opt/a780/dev-ezx-0.2.0/qt/bin".
Im Verzeichnis tmake-1.13/lib/qws/linux-ipaq-g++ due tmake.conf editieren.
# # $Id: tmake.conf,v 1.1 1999/11/08 03:06:27 warwick Exp $ # # tmake configuration for linux-g++ using the arm-linux-g++ crosscompiler. # TEMPLATE = app CONFIG = qt warn_on release TMAKE_ARM_INCDIR = $(CROSSTOOL_DIR)/gcc-arm-iwmmxt/gcc-3.3.6-glibc.2.3.2/arm-linux/arm-linux/include TMAKE_ARM_LIBDIR = $(CROSSTOOL_DIR)/gcc-arm-iwmmxt/gcc-3.3.6-glibc.2.3.2/arm-linux/arm-linux/lib TMAKE_CC = arm-linux-gcc TMAKE_DASHCROSS = -arm TMAKE_CFLAGS = -pipe TMAKE_CFLAGS_WARN_ON = -Wall -W TMAKE_CFLAGS_WARN_OFF = TMAKE_CFLAGS_RELEASE = -O2 -mcpu=iwmmxt -mtune=iwmmxt TMAKE_CFLAGS_DEBUG = -g TMAKE_CFLAGS_SHLIB = -fPIC TMAKE_CFLAGS_YACC = -Wno-unused -Wno-parentheses TMAKE_CFLAGS_THREAD = -D_REENTRANT TMAKE_CXX = arm-linux-g++ TMAKE_CXXFLAGS = $$TMAKE_CFLAGS -DQWS -fno-exceptions -fno-rtti TMAKE_CXXFLAGS_WARN_ON = $$TMAKE_CFLAGS_WARN_ON TMAKE_CXXFLAGS_WARN_OFF = $$TMAKE_CFLAGS_WARN_OFF TMAKE_CXXFLAGS_RELEASE = $$TMAKE_CFLAGS_RELEASE TMAKE_CXXFLAGS_DEBUG = $$TMAKE_CFLAGS_DEBUG TMAKE_CXXFLAGS_SHLIB = $$TMAKE_CFLAGS_SHLIB TMAKE_CXXFLAGS_YACC = $$TMAKE_CFLAGS_YACC TMAKE_CXXFLAGS_THREAD = -D_REENTRANT TMAKE_INCDIR = $$TMAKE_ARM_INCDIR TMAKE_LIBDIR = $$TMAKE_ARM_LIBDIR TMAKE_INCDIR_X11 = TMAKE_LIBDIR_X11 = TMAKE_INCDIR_QT = $(QTDIR)/include $(EZXDIR)/include TMAKE_LIBDIR_QT = $(DEVDIR)/lib -L$(EZXDIR)/lib TMAKE_INCDIR_OPENGL = /usr/X11R6/include TMAKE_LIBDIR_OPENGL = /usr/X11R6/lib TMAKE_LINK = arm-linux-g++ TMAKE_LINK_SHLIB = arm-linux-g++ TMAKE_LFLAGS = -Wl,-rpath-link,$(EZXDIR)/lib,-rpath-link,$(EZXDIR)/lib/inputmethods TMAKE_LFLAGS_RELEASE = TMAKE_LFLAGS_DEBUG = TMAKE_LFLAGS_SHLIB = -shared TMAKE_LFLAGS_SONAME = -Wl,-soname, TMAKE_LFLAGS_THREAD = TMAKE_RPATH = -Wl,-rpath-link,$(EZXDIR)/lib,-rpath-link,$(EZXDIR)/lib/inputmethods TMAKE_LIBS = TMAKE_LIBS_X11 = TMAKE_LIBS_X11SM = TMAKE_LIBS_QT = -lezxappbase-xscale-r -lqte-mt-xscale-r -lezxjpeg-xscale-r -lezxnotification-xscale-r TMAKE_LIBS_QT_THREAD = -lezxappbase-xscale-r -lqte-mt-xscale-r -lezxjpeg-xscale-r -lezxnotification-xscale-r TMAKE_LIBS_OPENGL = TMAKE_LIBS_THREAD = -lpthread LIBS += -L${DEVDIR}/lib -lezxappbase-xscale-r -lqte-mt-xscale-r -lezxjpeg-xscale-r -lezxnotification-xscale-r TMAKE_MOC = $(QTDIR)/bin/moc TMAKE_UIC = $(QTDIR)/bin/uic TMAKE_AR = arm-linux-ar cqs TMAKE_RANLIB = TMAKE_TAR = tar -cf TMAKE_GZIP = gzip -9f
In die "setenv.sh" muss dann noch geändert werden.
export TMAKEPATH=$QTDIR/tmake-1.13/lib/qws/linux-ipaq-g++
source setenv.sh progen -o helloworld.pro tmake -o Makefile helloworld.pro
Ich hoffe das Tutorial ist hilfreich. Es wird eventuell noch erweitert und genauer auf EZX/QT eingegangen und auf die mpkg Erstellung.