View source for Toolchain/de
From Openmoko
You do not have permission to edit this page, for the following reasons:
You can view and copy the source of this page:
Templates used on this page:
Return to Toolchain/de.
You do not have permission to edit this page, for the following reasons:
You can view and copy the source of this page:
Templates used on this page:
Return to Toolchain/de.
Languages: |
English • العربية • Български • Česky • Dansk • Deutsch • Esperanto • Eesti • Español • فارسی • Suomi • Français • עברית • Magyar • Italiano • 한국어 • Nederlands • Norsk (bokmål) • Polski • Português • Română • Русский • Svenska • Slovenčina • Українська • 中文(中国大陆) • 中文(台灣) • Euskara • Català |
Die "toolchain" (Werkzeugkette) ist ist eine Sammlung von Werkzeugen, die es dem Nutzer erlauben Code zu compilieren. Im Fall von Openmoko müssen wir zwischen folgenden Anwendungsfällen unterscheiden:
In diesem Fall sollte/kann man eine bereits compilierte Toolchain vom Openmoko-Projekt verwenden. Im folgenden liegt eine Anleitung vor, die die ersten Schritte zum compilieren und ausführen eines Projektes auf dem Zielgerät beschreibt. Vielleicht hat man schon etwas von OpenEmbedded gehört, jedoch sollte man als Applikationsentwickler nicht OpenEmbedded nutzen, sondern auf die Toolchain zurückgreifen.
Für diese Aufgabe sollte man OpenEmbedded nutzen, das einen eigenen Cross-Compiler beim Einrichten produziert. Systemintegration und die Anpassung einer Distribution werden auf dieser Seite nicht behandelt.
Man sollte sich halbwegs mit Linux auskennen und die grundlegenden Werkzeuge der Kommandozeile benutzen können. Weiterhin wird ein zur x86-Architektur kompatibler Computer benötigt mit mindestens 1GB freien Festplattenspeicher. Von Vorteil ist eine vorhandene Erfahrung mit dem compilieren von Programmen aus dem Quellcode an einem lokalen Computer. Im folgenden wird angenommen, dass man Schreibzugriff in sein Home-Verzeichnis und in /usr/local/ (evtl. sind dazu root-Rechte erforderlich) hat. Falls dies nicht der Fall ist, sollte man den Systemadministrator um Unterstützung bitten.
Weiterhin benötigt man eine funktionierende Installation einer Reihe von Werkzeugen, die das automatische Erzeugen von Programmen ermöglicht (./configure, make, make install).
Eine (möglicherweise nicht vollständige) Liste von benötigten Paketen -- Bitte, falls nötig ergänzen
sudo apt-get install gcc g++ autoconf automake binutils libtool libglib2.0-dev \ ccache libxrender-dev intltool libmokoui2-dev libgconf2-dev mtools
yum install gcc gcc-c++ autoconf automake binutils libtool glib2-devel \ ccache libXrender-devel intltool GConf2-devel mtools
In Fedora-Core scheint das Paket libmokoui2 nicht vorhanden zu sein.
Die vorkompilierte Toolchain kann unter downloads.openmoko.org heruntergeladen werden:
mkdir ~/sources cd ~/sources
wget http://downloads.openmoko.org/toolchains/openmoko-x86_64-arm-linux-gnueabi-toolchain.tar.bz2 oder wget http://downloads.openmoko.org/toolchains/openmoko-i686-arm-linux-gnueabi-toolchain.tar.bz2
Als nächstes entpackt man das Archiv, die Toolchain muss nach /usr/local/openmoko/ installiert werden:
Nun gibt es folgende Möglichkeiten:
cd / tar -xjvf ~/sources/openmoko-XYZ-arm-linux-gnueabi-toolchain.tar.bz2
bunzip2 openmoko-x86_64-arm-linux-gnueabi-toolchain.tar.bz2 gzip openmoko-x86_64-arm-linux-gnueabi-toolchain.tar fakeroot alien -d openmoko-x86_64-arm-linux-gnueabi-toolchain.tar.gz
bitbake meta-toolchain-openmoko
Letzendlich muss jedes mal, wenn man die Toolchain benutzt, Umgebungsvariablen gesetzt oder geändert werden, damit die Werkzeuge gefunden werden. Die Toolchain stellt ein Script zur Verfügung, mit dem dieser Vorgang automatisiert wird. (The toolchain provides a script to do that, so the only thing you need to do is to source it.). Man beachte, dass zunächst eine Bash oder sh gestartet werden musst, falls man keine der beiden benutzt (überprüfe dies mit echo $SHELL)
. /usr/local/openmoko/arm/setup-env
export PATH=$PATH":/usr/local/openmoko/arm/bin"
in einem beliebigen Verzeichnis (in diesem Beispiel ~/):
cp -r /usr/local/openmoko/source/openmoko-sample2 ~/
. /usr/local/openmoko/arm/setup-env
om-conf openmoko-sample2
cd openmoko-sample2
./autogen.sh
make
Falls man dieses Projekt auf dem Host installieren will um es später als Gerüst für folgende Projekte, z.B. als "shared library" benutzen zu können, kann man folgendes machen um es in das vorgegebene prefix-Verzeichnis zu installieren (übersetzt von: If you want to install this project on host for staging usage later, a shared library, for example, you can do the following to install it into a given configured prefix.)
om-conf --prefix=/usr/local/openmoko openmoko-sample2 cd openmoko-sample2 make install
Möchte man ein eigenes Projekt unter Verwendung der openmoko-sample2 Daten erstellen, sind einige Änderungen notwendig:
cp -r /usr/local/openmoko/source/openmoko-sample2 ~/
mv openmoko-sample2 eigenes-projekt-name cd dein-projekt-name cd src rm *.c
cp eigener-quellcode . cd ..
PKG_NAME="eigener-projekt-name"
AC_INIT(eigener-projekt-name-main, 0.0.1, http://www.openmoko.org/) AC_CONFIG_SRCDIR(src/main.c)
cd data mv openmoko-sample.png eigener-projekt-name.png mv openmoko-sample.desktop eigener-projekt-name.desktop
dist_desktop_DATA = eigener-projekt-name.desktop dist_appicon_DATA = eigener-projekt-name.png
dist_desktop_DATA = smart-search.desktop dist_appicon_DATA = smart-search.png
Name=eigener-projekt-name Encoding=UTF-8 Version=0.0.1 Type=Application Exec=eigener-projekt-name
Icon=eigener-projekt-name
cd .. cd src
bin_PROGRAMS = eigener-projekt-name eigener_projekt_name_SOURCES = \ main.c eigener_projekt_name_LDADD = @DEPENDENCIES_LIBS@
In der Toolchain ist ein Script enthalten um aus der kompilierten Anwendung ein ipkg-Paket zu erstellen. Man beachte, dass es nicht benötigt wird um die Anwendung zu testen (hierfür kannst du diese einfach per scp übertragen). Das ipkg-Paket ist sehr praktisch um es Anderen zur Verfügung zu stellen.
om-make-ipkg openmoko-sample2
Damit erhält man eine Datei mit dem Namen openmoko-sample2_0.1_armv4t.ipk welche wiederum per scp auf das Neo übertragen werden kann, um es dort zu installieren:
scp openmoko-sample2_0.1_armv4t.ipk root@192.168.0.202: ssh root@192.168.0.202 ipkg install openmoko-sample2_0.1_armv4t.ipk
Man beachte, dass das erstellte Paket lediglich das Programm ohne weitere Informationen (z.B. Abhängigkeiten) enthält. Im folgenden fügen wir diese Informationen hinzu.
Man kann z.B. die Versionsnummer, eine Beschreibung, den Autor und/oder die Kontaktinformationen in eine Info-Datei einfügen:
om-make-ipkg myapp myapp_control
Die Info-Datei myapp_control könnte folgendermaßen aussehen:
Package: $appname Version: 0.1 Description: package built by openmoko toolchain Section: openmoko/applications Priority: optional Maintainer: $USER Architecture: armv4t Homepage: http://www.openmoko.org/ Depends: Source: ${SRC}
Die Benutzung der externen Toolchain stellt einen einfachen Weg dar, mit den Applikationen für das Neo erstellt werden können. Weitere mögliche Schritte könnten der folgenden Liste entnommen werden:
Füge die benötigten Bibliotheken zum _LDADD Feld in src/Makefile.am, z.B.:
openmoko_sample2_LDADD = @DEPENDENCIES_LIBS@ -lmokogsmd2
Beachte, dass danach om-conf erneut aufgeführt werden muss.
Früher oder später wirst du ein Projekt compilieren wollen, welches nicht nur von den Bibliotheken abhängt, die in der Toolchain enthalten sind. In diesem Fall kannst du uns fragen, ob diese nicht beim nächsten Release aufgenommen werden könnten. Bis dahin kannst Du deine Toolchain selbst erweitern. Wir wollen hier die Toolchain um die Bibliothek liburiparse erweitern:
cd ~/source wget http://downloads.sourceforge.net/uriparser/uriparser-0.6.0.tar.bz2 ./configure --host=arm-angstrom-linux-gnueabi \ --prefix=/usr/local/openmoko/arm/arm-angstrom-linux-gnueabi/usr/ make make install
Fertig!
Wenn man ein gute Anwendung geschrieben hat und diese mit anderen teilen möchte, ist folgender der beste Weg dies zu tun:
Siehe auch Customizing the Openmoko Distribution/de.