Toolchain/de

From Openmoko

(Difference between revisions)
Jump to: navigation, search
(Weitere Schritte)
m
 
(7 intermediate revisions by one user not shown)
Line 177: Line 177:
 
  Icon=eigener-projekt-name
 
  Icon=eigener-projekt-name
  
* Ins src/ Verzeichnis verschieben
+
* Ins src/ Verzeichnis gehen
  
 
  cd ..
 
  cd ..
Line 224: Line 224:
  
 
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:
 
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:
* Benutzen von [[Qemu]] um die erstellten Anwendungen in einer emulierten Umgebung zu testen
+
* Benutzen von [[Openmoko_under_QEMU/de|QEMU]] um die erstellten Anwendungen in einer emulierten Umgebung zu testen
 
** Für Ubuntu-Benutzer könnte folgende Seite interessant sein [[Automatic_emulation_in_Ubuntu/de|Automatische Emulation in Ubuntu]]
 
** Für Ubuntu-Benutzer könnte folgende Seite interessant sein [[Automatic_emulation_in_Ubuntu/de|Automatische Emulation in Ubuntu]]
 
* [[Host-based_development_with_Xoo_and_Xephyr/de|host-based development]] für effizienteres Arbeiten
 
* [[Host-based_development_with_Xoo_and_Xephyr/de|host-based development]] für effizienteres Arbeiten
Line 255: Line 255:
  
 
# Hochladen des Quellcodes an einen öffentlichen Ort
 
# Hochladen des Quellcodes an einen öffentlichen Ort
# Übertragen eines [[BitBake]] Rezeptes nach [[OpenEmbedded]], vorzugsweise mit [http://bugzilla.openembedded.org OpenEmbedded bugtracker].
+
# Übertragen eines [[BitBake/de|BitBake]] Rezeptes nach [[OpenEmbedded/de|OpenEmbedded]], vorzugsweise mit [http://bugzilla.openembedded.org OpenEmbedded bugtracker].
  
Siehe auch [[Customizing the Openmoko Distribution/de]].
+
Siehe auch [[Customizing the Openmoko Distribution/de|Anpassung der Openmoko Distribution]].
  
 
==Problembehandlung==
 
==Problembehandlung==
Line 263: Line 263:
 
* Bitte die [http://lists.openmoko.org/mailman/listinfo/openmoko-devel Openmoko-Devel] mailing list benutzen.
 
* Bitte die [http://lists.openmoko.org/mailman/listinfo/openmoko-devel Openmoko-Devel] mailing list benutzen.
  
[[Category:Application Developer]]
+
[[Category:Application Developer/de]]

Latest revision as of 00:51, 21 August 2008


Contents

[edit] Einführung

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:

[edit] Softwareentwicklung für das Betriebssystem

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.

[edit] Systemintegration und Anpassung einer Distribution

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.

[edit] Elementare Benutzung der Toolchain

[edit] Bedingungen zur Nutzung der Toolchain

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

  • In den meisten Fällen sind lediglich folgende Pakete notwendig
    • autoconf, automake
    • binutils, gcc, gcc-c++
    • libtool
    • ccache
    • intltool
  • Bei Ubuntu 8.04 (Vorgänger unterstützen kein libmokoui2) wird folgendes Kommando die nötigen Pakete installieren
sudo apt-get install gcc g++ autoconf automake binutils libtool libglib2.0-dev \
ccache libxrender-dev intltool libmokoui2-dev libgconf2-dev mtools
  • Bie Fedora-Core muss folgendes Kommando (mit root-Rechten ausführen) zur Installation verwendet:
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.

[edit] Herunterladen und Installieren

Template:Beachte

Die vorkompilierte Toolchain kann unter downloads.openmoko.org heruntergeladen werden:

  • Man erstellt ein Verzeichnis z.B.
 mkdir ~/sources
 cd ~/sources
  • Je nach Architektur muss eins der beiden folgenden Archive heruntergeladen werden:
 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:

  • die Datei sofort als root entpacken, mit dem Kommando su um root-Rechte zu erlangen, ( oder mit dem Präfix sudo bei Debian/Ubuntu ):
  cd /
  tar -xjvf ~/sources/openmoko-XYZ-arm-linux-gnueabi-toolchain.tar.bz2
  • Auf Debian basierenden Systemen kann man ein einfach-zu-entfernendes Paket aus dem .tar.bz2 mit alien und fakeroot erstellen, welches dann mit dpkg -i <package.deb> installiert wird:
  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
  • Die vorkompilierte Toolchain wird für die Architekturen x86_64 oder i686 bereitgestellt, bei Bedarf kann die Toolchain mit OpenEmbedded folgendermaßen kompiliert werden:
  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
  • Zum Schluss muss man /usr/local/openmoko/arm/bin zur Umgebungsvariable $PATH hinzufügen, da sonst die kommenden Schritte nicht funktionieren werden.
export PATH=$PATH":/usr/local/openmoko/arm/bin"

[edit] Kompilieren eines Beispielprojektes

in einem beliebigen Verzeichnis (in diesem Beispiel ~/):

  • Man kopiert den Quellcode des heruntergeladenen Beispielprogramms:
cp -r /usr/local/openmoko/source/openmoko-sample2 ~/
  • Nicht vergessen, die entsprechenden Umgebungsvariablen für Openmoko zu setzen (wiederum mit "sh" oder "bash"):
. /usr/local/openmoko/arm/setup-env
  • Nun muss man eine Build-Urumgebung für dieses Programm erstellen. Dieser Vorgang überprüft auch ob alle benötigten Bibliotheken und Werkzeuge auf dem System vorhanden sind. Falls dieser Vorgang mit einem Fehler abbricht, beachte man den vorangegangenen Abschnitt "Bedingungen zur Nutzung der Toolchain"
om-conf openmoko-sample2
  • Je nach Wunsch kann man jetzt den Code der Beispielanwendung in openmoko-sample2/src verändern
  • Um die Applikation aus dem "source code" zu erstellen, muss zuerst eine Makefile generiert werden, damit dann einfach make benutzt werden kann
cd openmoko-sample2
  • Das autogen.sh Skript wird benutzt um einen Makefile zu erstellen.
./autogen.sh
  • Falls hier ein Fehler Auftritt ( "You need to install gnome-common from the GNOME CVS") muss dieser selbsterklärend durch Installation von "gnome-common" beseitigt werden, andernfalls kann man nun "make" eingeben:
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

[edit] Abändern des Beispielprojektes

Möchte man ein eigenes Projekt unter Verwendung der openmoko-sample2 Daten erstellen, sind einige Änderungen notwendig:

  • Die Quellen werden kopiert der Beispielanwendung
cp -r /usr/local/openmoko/source/openmoko-sample2 ~/

  • Der Ordner wird in den Namen des Projektes umbenannt (in diesem Beispiel dein-projekt-name) und die alten Beispieldateien werden gelöscht
mv openmoko-sample2 eigenes-projekt-name
cd dein-projekt-name
cd src
rm *.c
  • Der eigene Quellcode wird kopiert (in diesem Beispiel eigener-quellcode) in src/
cp eigener-quellcode .
cd ..
  • Jetzt sollte im Hauptverzeichnis in der Datei autogen.sh folgende Zeile entsprechend geändert werden
PKG_NAME="eigener-projekt-name"
  • In der Datei configure.ac sollten folgende Zeilen geändert werden ('main.c' sollte die main-Datei deines Projektes sein)
AC_INIT(eigener-projekt-name-main, 0.0.1, http://www.openmoko.org/)    
AC_CONFIG_SRCDIR(src/main.c)
  • Ins Verzeichnis data/ gehen und diese Dateien mit dem Namen deines Projektes umbenennen
cd data
mv openmoko-sample.png eigener-projekt-name.png
mv openmoko-sample.desktop eigener-projekt-name.desktop
  • Im Verzeichnis data/ in der Datei Makefile.am folgende Zeilen abändern
dist_desktop_DATA = eigener-projekt-name.desktop
dist_appicon_DATA = eigener-projekt-name.png
  • Im Verzeichnis data/ in der Datei Makefile.in folgende Zeilen abändern
dist_desktop_DATA = smart-search.desktop
dist_appicon_DATA = smart-search.png
  • Man aktualisiere in eigener-projekt-name.desktop folgende Zeilen
Name=eigener-projekt-name
Encoding=UTF-8
Version=0.0.1
Type=Application
Exec=eigener-projekt-name
  • und füge diese hinzu
Icon=eigener-projekt-name
  • Ins src/ Verzeichnis gehen
cd ..
cd src
  • In der Datei Makefile.am folgende Zeilen abändern
bin_PROGRAMS = eigener-projekt-name	
eigener_projekt_name_SOURCES = \				
 		main.c 
eigener_projekt_name_LDADD  = @DEPENDENCIES_LIBS@
  • Man muss sicher gehen, dass anstelle der main.c alle eigenen .c und h. Dateien eingesetzt werden und in den Variablennamen alle '-' Zeichen in '_' umgewandelt werden

[edit] ipkg Erstellen

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}

[edit] Weitere Schritte

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:

[edit] Weiterführendes

[edit] Benutzen der Toolchain Bibliotheken

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.

[edit] Hinzufügen zusätzlicher Bibliotheken zur Toolchain

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!

[edit] Die eigene Anwendung als Paket von OE

Wenn man ein gute Anwendung geschrieben hat und diese mit anderen teilen möchte, ist folgender der beste Weg dies zu tun:

  1. Hochladen des Quellcodes an einen öffentlichen Ort
  2. Übertragen eines BitBake Rezeptes nach OpenEmbedded, vorzugsweise mit OpenEmbedded bugtracker.

Siehe auch Anpassung der Openmoko Distribution.

[edit] Problembehandlung

Personal tools


Einführung

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:

Softwareentwicklung für das Betriebssystem

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.

Systemintegration und Anpassung einer Distribution

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.

Elementare Benutzung der Toolchain

Bedingungen zur Nutzung der Toolchain

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

  • In den meisten Fällen sind lediglich folgende Pakete notwendig
    • autoconf, automake
    • binutils, gcc, gcc-c++
    • libtool
    • ccache
    • intltool
  • Bei Ubuntu 8.04 (Vorgänger unterstützen kein libmokoui2) wird folgendes Kommando die nötigen Pakete installieren
sudo apt-get install gcc g++ autoconf automake binutils libtool libglib2.0-dev \
ccache libxrender-dev intltool libmokoui2-dev libgconf2-dev mtools
  • Bie Fedora-Core muss folgendes Kommando (mit root-Rechten ausführen) zur Installation verwendet:
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.

Herunterladen und Installieren

Template:Beachte

Die vorkompilierte Toolchain kann unter downloads.openmoko.org heruntergeladen werden:

  • Man erstellt ein Verzeichnis z.B.
 mkdir ~/sources
 cd ~/sources
  • Je nach Architektur muss eins der beiden folgenden Archive heruntergeladen werden:
 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:

  • die Datei sofort als root entpacken, mit dem Kommando su um root-Rechte zu erlangen, ( oder mit dem Präfix sudo bei Debian/Ubuntu ):
  cd /
  tar -xjvf ~/sources/openmoko-XYZ-arm-linux-gnueabi-toolchain.tar.bz2
  • Auf Debian basierenden Systemen kann man ein einfach-zu-entfernendes Paket aus dem .tar.bz2 mit alien und fakeroot erstellen, welches dann mit dpkg -i <package.deb> installiert wird:
  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
  • Die vorkompilierte Toolchain wird für die Architekturen x86_64 oder i686 bereitgestellt, bei Bedarf kann die Toolchain mit OpenEmbedded folgendermaßen kompiliert werden:
  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
  • Zum Schluss muss man /usr/local/openmoko/arm/bin zur Umgebungsvariable $PATH hinzufügen, da sonst die kommenden Schritte nicht funktionieren werden.
export PATH=$PATH":/usr/local/openmoko/arm/bin"

Kompilieren eines Beispielprojektes

in einem beliebigen Verzeichnis (in diesem Beispiel ~/):

  • Man kopiert den Quellcode des heruntergeladenen Beispielprogramms:
cp -r /usr/local/openmoko/source/openmoko-sample2 ~/
  • Nicht vergessen, die entsprechenden Umgebungsvariablen für Openmoko zu setzen (wiederum mit "sh" oder "bash"):
. /usr/local/openmoko/arm/setup-env
  • Nun muss man eine Build-Urumgebung für dieses Programm erstellen. Dieser Vorgang überprüft auch ob alle benötigten Bibliotheken und Werkzeuge auf dem System vorhanden sind. Falls dieser Vorgang mit einem Fehler abbricht, beachte man den vorangegangenen Abschnitt "Bedingungen zur Nutzung der Toolchain"
om-conf openmoko-sample2
  • Je nach Wunsch kann man jetzt den Code der Beispielanwendung in openmoko-sample2/src verändern
  • Um die Applikation aus dem "source code" zu erstellen, muss zuerst eine Makefile generiert werden, damit dann einfach make benutzt werden kann
cd openmoko-sample2
  • Das autogen.sh Skript wird benutzt um einen Makefile zu erstellen.
./autogen.sh
  • Falls hier ein Fehler Auftritt ( "You need to install gnome-common from the GNOME CVS") muss dieser selbsterklärend durch Installation von "gnome-common" beseitigt werden, andernfalls kann man nun "make" eingeben:
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

Abändern des Beispielprojektes

Möchte man ein eigenes Projekt unter Verwendung der openmoko-sample2 Daten erstellen, sind einige Änderungen notwendig:

  • Die Quellen werden kopiert der Beispielanwendung
cp -r /usr/local/openmoko/source/openmoko-sample2 ~/

  • Der Ordner wird in den Namen des Projektes umbenannt (in diesem Beispiel dein-projekt-name) und die alten Beispieldateien werden gelöscht
mv openmoko-sample2 eigenes-projekt-name
cd dein-projekt-name
cd src
rm *.c
  • Der eigene Quellcode wird kopiert (in diesem Beispiel eigener-quellcode) in src/
cp eigener-quellcode .
cd ..
  • Jetzt sollte im Hauptverzeichnis in der Datei autogen.sh folgende Zeile entsprechend geändert werden
PKG_NAME="eigener-projekt-name"
  • In der Datei configure.ac sollten folgende Zeilen geändert werden ('main.c' sollte die main-Datei deines Projektes sein)
AC_INIT(eigener-projekt-name-main, 0.0.1, http://www.openmoko.org/)    
AC_CONFIG_SRCDIR(src/main.c)
  • Ins Verzeichnis data/ gehen und diese Dateien mit dem Namen deines Projektes umbenennen
cd data
mv openmoko-sample.png eigener-projekt-name.png
mv openmoko-sample.desktop eigener-projekt-name.desktop
  • Im Verzeichnis data/ in der Datei Makefile.am folgende Zeilen abändern
dist_desktop_DATA = eigener-projekt-name.desktop
dist_appicon_DATA = eigener-projekt-name.png
  • Im Verzeichnis data/ in der Datei Makefile.in folgende Zeilen abändern
dist_desktop_DATA = smart-search.desktop
dist_appicon_DATA = smart-search.png
  • Man aktualisiere in eigener-projekt-name.desktop folgende Zeilen
Name=eigener-projekt-name
Encoding=UTF-8
Version=0.0.1
Type=Application
Exec=eigener-projekt-name
  • und füge diese hinzu
Icon=eigener-projekt-name
  • Ins src/ Verzeichnis verschieben
cd ..
cd src
  • In der Datei Makefile.am folgende Zeilen abändern
bin_PROGRAMS = eigener-projekt-name	
eigener_projekt_name_SOURCES = \				
 		main.c 
eigener_projekt_name_LDADD  = @DEPENDENCIES_LIBS@
  • Man muss sicher gehen, dass anstelle der main.c alle eigenen .c und h. Dateien eingesetzt werden und in den Variablennamen alle '-' Zeichen in '_' umgewandelt werden

ipkg Erstellen

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}

Weitere Schritte

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:

Weiterführendes

Benutzen der Toolchain Bibliotheken

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.

Hinzufügen zusätzlicher Bibliotheken zur Toolchain

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!

Die eigene Anwendung als Paket von OE

Wenn man ein gute Anwendung geschrieben hat und diese mit anderen teilen möchte, ist folgender der beste Weg dies zu tun:

  1. Hochladen des Quellcodes an einen öffentlichen Ort
  2. Übertragen eines BitBake Rezeptes nach OpenEmbedded, vorzugsweise mit OpenEmbedded bugtracker.

Siehe auch Customizing the Openmoko Distribution/de.

Problembehandlung