summaryrefslogtreecommitdiffstats
path: root/ausarbeitung/Tutorial.tex~
diff options
context:
space:
mode:
authorPatrick Hornecker2010-01-18 21:16:01 +0100
committerPatrick Hornecker2010-01-18 21:16:01 +0100
commit38d3630573a5a94a1be3162d029d66f752bc322d (patch)
tree0c4b25d00d00459d4943248d64febdad77f72cfe /ausarbeitung/Tutorial.tex~
parentbarcode window added (diff)
downloadfriendfinder-38d3630573a5a94a1be3162d029d66f752bc322d.tar.gz
friendfinder-38d3630573a5a94a1be3162d029d66f752bc322d.tar.xz
friendfinder-38d3630573a5a94a1be3162d029d66f752bc322d.zip
tex sources
Diffstat (limited to 'ausarbeitung/Tutorial.tex~')
-rw-r--r--ausarbeitung/Tutorial.tex~340
1 files changed, 340 insertions, 0 deletions
diff --git a/ausarbeitung/Tutorial.tex~ b/ausarbeitung/Tutorial.tex~
new file mode 100644
index 0000000..37e3475
--- /dev/null
+++ b/ausarbeitung/Tutorial.tex~
@@ -0,0 +1,340 @@
+\section{Tutorial}
+
+Beim folgenden Abschnitt handelt es sich um ein \textit{Tutorial} in welchem Schritt für Schritt erklärt was notwendig ist um
+\textit{Enlightenment} \citep{efl} und das Programm \textit{Ueberall} von Linux nach \textit{Windows Mobile 6.1} zu portieren. Bei
+dem genutzten Linux handelt es sich um ein Ubuntu Version 9.10. Für dieses Vorhaben werden mehrere
+Tools benötigt, welche auch im folgenden kurz vorgestellt werden. Zum einen wird das \textit{Enlightenment} Packet benötigt, welches aus
+mehreren Unterprogrammen besteht. Diese wurden allesamt aus dem \textit{Subversion Repository} der Entwickler heruntergeladen.
+Ein weiterer wichtiger Rolle in diesem Vorhaben spielt der \textit{CeGCC-Compiler} \citep{cegcc}, welcher für das kompilieren von Programmcode von
+Linux nach Windows Mobile benötigt wird.\newline
+Diese Programme bilden die Grundlagen für diese Aufgabe. Um \textit{Ueberall} kompilieren ist es auch nötig noch ein paar
+\textit{Libraries} zu protieren. Auf diese wird im Abschnitt \textit{Ueberall} genauer eingegangen.\newline
+Als erstes wird nun auf den \textit{CeGCC} näher eingegangen, danach auf das Erstellen von Enlightenment für Windows Mobiel und
+schliesslich wird auch das portieren von \textit{Ueberall} genauer besprochen.
+
+\subsection{CeGCC}
+Der CeGCC ist ein \textit{Open-Source} Projekt, welches ein \textit{Crosscompiler} von Linux nach Windows Mobile entwickelt hat. Dieser
+Kompiler bassiert auf dem standart Unix C-Kompiler, dem GCC.\newline
+Eine aktuelle Version des CeGCC's kann auf der Projekthomepage gefunden und heruntergeladen werden. Es wird hierbei prinzipiell zwischen
+zwei verschiedenen Arten des CeGCC's unterschieden. Es gibt zum einen einen Kompiler der eben \textit{cegcc} genannt wird, zum anderen aber
+aber auch einen welcher \textit{mingw32ce} genannt wird. Der Unterschied zwischen diesen beiden Kompilern besteht darin, dass ersterer
+nur dann benutzt wird, wenn man nur Linux APIs nutzt. Im Unterschied dazu wird der \textit{mingw32ce}-Kompiler dann gebraucht, wenn man
+auch \textit{Windows Mobile} APIs nutzen möchte.\newline
+Für diese Aufgabe wird der \textit{mingw32ce} für den \textit{ARM}-Prozessortyp benötigt. Dieser kann auf der Homepage des CeGCC-Projekts
+heruntergeladen und in das passende Systemverzeichniss entpackt werden.\newline
+Hat man diese zwei Schritte erledigt, hat man auch schon den CeGCC erfolgreich auf seinem System installiert.
+
+\subsection{Enlightenment}
+Unter dem Namen \textit{Enlightenment} werden mehrere Programme zusammengefasst, welche zusammen einen kompletten \textit{Window-Manager}
+bilden. Auch hier handelt es sich um ein \textit{Open-Source} Projekt. Um ein \textit{Frontend}, welches mit einer Enlightenment Bibliothek
+erstellt wurde, auf einem Smart Phone starten zu können müssen mehrere Programme mit dem \textit{CeGCC} kompiliert werden. Diese sind: \textit{evil, eina,
+eet, embryo, evas, ecore, edje und elementary}. Diese Programme werden mit dem von den Entwicklern bereitgestelltem Source Code kompiliert.
+
+Bevor man allerdings damit beginnen kann, müssen noch ein paar benötigte Packete aus dem Ubuntu-Repository installiert werden.
+
+\begin{verbatim}
+sudo apt-get install build-essential make gcc bison flex subversion
+autoconf libtool gettext libfreetype6-dev libpng12-dev zlib1g-dev
+libjpeg-dev libtiff-dev libungif4-dev librsvg2-dev xorg-dev
+libltdl3-dev libcurl4-dev cvs subversion git-core doxygen proj
+libsqlite3-0 libsqlite3-dev
+\end{verbatim}
+
+Nachdem diese Packete installiert wurden kann man sich nun die einzelnen Packete aus dem \textit{Subversion-Repository} der Entwickler
+herunterladen.\newline
+Nun muss man sich noch ein Verzeichniss anlegen, in welchem die für Windows Mobile kompilierten Dateien abgelegt werden. Des weiteren
+muss noch eine Datei angelegt werden, in welcher die Pfade zu dem genutzten Kompiler liegen und welche dann einmalig exportiert werden
+müssen, damit die benötigten \textit{Header-Files}, textit{Libraries} und \textit{Binaries} auch vom Betriebssystem gefunden werden.
+Diese Datei wird im folgenden ``mingw32ce.env'' benannt.
+
+\begin{verbatim}
+ touch mingw32ce.env
+\end{verbatim}
+
+Nun müssen noch in diese Datei die zu exportierenden Pfade geschrieben werden.
+
+\begin{verbatim}
+export CEGCC_PATH=/opt/cegcc
+export MINGW32CE_PATH=/opt/mingw32ce
+export WINCE_PATH=$HOME/workspace/wince
+
+export PATH=$CEGCC_PATH/bin:$MINGW32CE_PATH/bin:$PATH
+export CPPFLAGS="-I$WINCE_PATH/include -I$WINCE_PATH/zlib-1.2.3-dev/include
+ -I$WINCE_PATH/libjpeg-6b-dev/include -I$WINCE_PATH/win_iconv-dev/include
+ -I$WINCE_PATH/freetype-2.3.7-dev/include
+ -I$WINCE_PATH/libpng-1.2.33-dev/include/libpng12
+ -I$WINCE_PATH/win_iconv-dev/include -I/opt/mingw32ce/arm-mingw32ce/include/"
+export LDFLAGS="-L$WINCE_PATH/lib -L$WINCE_PATH/zlib-1.2.3-dev/lib
+ -L$WINCE_PATH/libjpeg-6b-dev/lib
+ -L$WINCE_PATH/win_iconv-dev/include -L$WINCE_PATH/freetype-2.3.7-dev/lib
+ -L$WINCE_PATH/libpng-1.2.33-dev/lib -L$WINCE_PATH/win_icon-dev/lib
+ -L$CEGCC_PATH/lib"
+export LD_LIBRARY_PATH="$WINCE_PATH/bin"
+export PKG_CONFIG_PATH="$WINCE_PATH/lib/pkgconfig"
+\end{verbatim}
+
+Der Inhalt dieser Datei muss nun in jeder neu geöffneten Shell neu exportiert werden, da sie durch die hier gewählte Methode nur in
+eben diesen Shell's gelten wo sie exportiert wurden.\newline
+Bei den Variablen ``CEGCC\_PATH'' und ``MINGW32CE\_PATH'' ist der Pfad zum Verzeichniss des \textit{cegcc}, beziehungsweiße des \textit{mingw32ce}
+Kompilers einzutragen. Unter ``WINCE\_PATH'' muss der Pfad, zu dem Verzeichniss in dem die kompilierten Daten gespeichert werden sollen,
+eingetragen werden. Mit ``PATH'' werden die \textit{Binaries}, der zwei Kompiler, in den Systempfad aufgenommen. Des weiteren werden unter
+``CPPFLAGS'' die \textit{include}-Pfade und unter ``LDFLAGS'' die \textit{Librarie} Pfade abgelegt. ``LD\_LIBRARY\_PATH'' zeigt auf den Ordner
+in welchem die kompilierten \textit{Binaries} liegen. ``PKG\_CONFIG\_PATH'' zeigt schliesslich noch auf den Ordner der die Packetinformationen
+der installierten Dateien beinhaltet. Dieses exportieren geschieht mit dem folgenden Aufruf.
+
+\begin{verbatim}
+source <Pfad-zu-der-Datei>/mingw32ce.env
+\end{verbatim}
+
+Im nächsten Schritt muss nun noch ein Ordner angelegt werden, in welchem der \textit{Enlightenment Source-Code} abgelegt wird. Nun muss noch in
+dieses Verzeichniss gewechselt werden und es kann mit dem ersten Programm begonnen werden.
+
+\subsubsection{evil}
+Als erstes ist es nötig das Programm \textit{evil} aus dem \textit{SVN}, welches von den Entwicklern bereit gestellt wurde, herunterzuladen.
+Das herunterladen geschieht mit:
+
+\begin{verbatim}
+ svn co http://svn.enlightenment.org/svn/e/trunk/evil
+\end{verbatim}
+
+Nachdem alle Dateien erfolgreich heruntergeladen wurden muss, falls nicht schon geschen, die Datei mit den \textit{Umgebungsvaribalen}
+eingelesen werden. Nachdem dies geschehen ist, kann man nun das Konfigurationsskript starten
+
+\begin{verbatim}
+ ./autogen.sh --prefix=$WINCE_PATH --host=arm-mingw32ce
+\end{verbatim}
+
+Durch diesen Aufruf wird der Installationspfad auf den Wert der Variable ``WINCE\_PATH'' gesetzt und als Zielsystem ein
+\textit{ARM-Prozessor} gesetzt und der \textit{mingw32ce}-Kompiler als Kompiler gewählt.\newline
+Nachdem dieses Skript erfolgreich durchgeführt wurde, kann man im nächsten Schritt das Programm erstellen.
+
+\begin{verbatim}
+ make
+\end{verbatim}
+
+Ist auch dies erfolgreich durchgelofen, so muss man nun noch in einem letzen Schritt die erstellten Dateien im Zielordner installieren.
+
+\begin{verbatim}
+ make install
+\end{verbatim}
+
+Nun sollte \textit{evil} erfolgreich im Zielordner installiert worden sein.
+
+\subsubsection{eina}
+
+Auch hier ist es auch wieder nötig die Dateien aus dem Entwickler-Repository herunterzuladen.
+
+\begin{verbatim}
+ svn co http://svn.enlightenment.org/svn/e/trunk/eina
+\end{verbatim}
+
+Danach wird auch hier wieder das ``autogen.sh'' Skript aufgerufen.
+
+\begin{verbatim}
+ ./autogen.sh --prefix=$WINCE_PATH --host=arm-mingw32ce --disable-pthread
+\end{verbatim}
+
+Es werden bei diesem Aufruf die gleichen Parameter wie bei \textit{evil} übergeben. Hinzu kommt noch ``--disable-pthread''. Mit diesem
+Parameter wird \textit{threading} beim erstellen von \textit{eina} deaktiviert, da \textit{ARM-Prozessoren} dies nicht unterstützen.\newline
+Nachdem das Skript durchgelaufen ist, muss man nun auch wieder das Programm erstellen und im Zielverzeichniss installieren.
+
+\begin{verbatim}
+ make ; make install
+\end{verbatim}
+
+\subsubsection{eet}
+
+Bevor man \textit{eet} erstellen kann, muss man noch vier vorgefertigte \textit{tar-Archive} im Verzeichniss, welches in der Variable
+``WINCE\_PATH'' gespeichert wurde, entpacken. Diese Archive kann man unter den Links, welche in Anhang 2 zu finden sind, herunterladen.
+Nach dem herunterladen müssen diese nur noch in das ``WINCE\_PATH''-Verzeichniss kopiert und entpackt werden. Nun kann man den Quellcode
+für \textit{eet} herunterladen.
+
+\begin{verbatim}
+ svn co http://svn.enlightenment.org/svn/e/trunk/eet
+\end{verbatim}
+
+Nachdem die Dateien heruntergeladen sind, muss wieder das ``autogen.sh``-Skript aufgerufen werden.
+
+\begin{verbatim}
+ ./autogen.sh --prefix=$WINCE_PATH --host=arm-mingw32ce
+\end{verbatim}
+
+Im Anschluss muss nun auch wieder kompiliert und installiert werden.
+
+\begin{verbatim}
+ make ; make install
+\end{verbatim}
+
+\subsubsection{embryo}
+
+\begin{verbatim}
+ svn co http://svn.enlightenment.org/svn/e/trunk/embryo
+\end{verbatim}
+
+Nachdem die Dateien heruntergeladen sind auch wieder das Skript aufrufen.
+
+\begin{verbatim}
+ ./autogen.sh --prefix=$WINCE_PATH --host=arm-mingw32ce
+\end{verbatim}
+
+Im Anschluss nun auch wieder kompilieren und installieren.
+
+\begin{verbatim}
+ make ; make install
+\end{verbatim}
+
+\subsubsection{evas}
+
+Auch für \textit{evas} müssen mehrere \textit{tar-Archive} heruntergeladen werden. Auch sollen diese in das gleiche Verzeichniss, wie
+die vorhergegangenen Archive, entpackt werden. Nun müssen noch die Dateien, welche die Packetinformationen beinhalten für die heruntergeladen
+Dateien ergänzt werden:
+
+\begin{verbatim}
+ cp $WINCE_PATH/cp libpng-1.2.33-dev/lib/pkgconfig/libpng* $WINCE_PATH/lib/pkgconfig/
+ cp $WINCE_PATH/freetype-2.3.7-dev/lib/pkgconfig/freetype2.pc $WINCE_PATH/lib/freetype2.pc
+\end{verbatim}
+
+Nun müssen diese Packetinformationen noch bearbeitet werden. Dazu müssen diese mit einem beliebigen Editor geöffnet werden und in beiden
+Dateien der Wert von ''prefix`` auf ''WINCE\_PATH`` gesetzt werden.
+
+Nachdem dies durchgeführt wurde kann nun \textit{evas} heruntergeladen werden.
+
+\begin{verbatim}
+ svn co http://svn.enlightenment.org/svn/e/trunk/evas
+\end{verbatim}
+
+Nun muss auch hier, wie bei allen anderen Programmen das ''autogen.sh``-Skript aufgerufen werden.
+
+\begin{verbatim}
+ ./autogen.sh --prefix=$WINCE_PATH --host=arm-mingw32ce --disable-async-events
+\end{verbatim}
+
+Als nächster Schritt muss nun das Programm kompiliert werden.
+
+\begin{verbatim}
+ make
+\end{verbatim}
+
+Sollte hierbei die Datei ''ft2build.h`` nicht gefunden werden, so muss diese an die richtige Stelle kopiert werden. Eigentlich liegt die
+Datei an folgendem Ort:
+
+\begin{verbatim}
+ $WINCE_PATH/freetype-2.3.7-dev/include/freetype2/ft2build.h
+\end{verbatim}
+
+Allerdings wird sie im Ordner ''freetype2`` nicht gefunden. Um dies zu umgehen muss ''ft2build.h`` einfach eine Ordnerebene nach oben
+kopiert werden.
+
+\begin{verbatim}
+ cp $WINCE_PATH/freetype-2.3.7-dev/include/freetype2/ft2build.h $WINCE_PATH/freetype-2.3.7-dev/include
+\end{verbatim}
+
+Um einen weiteren Fehler von vorneherein zu umgehen, muss man noch den Pfad eines eingebundenen Headers in ''ft2build.h`` abändern.
+Hierzu öffnet man ''ft2build.h`` mit einem beliebigen Editor und ändert folgendes
+
+\begin{verbatim}
+ #include <freetype/config/ftheader.h>
+\end{verbatim}
+
+zu
+
+\begin{verbatim}
+ #include <freetype2/freetype/config/ftheader.h>
+\end{verbatim}
+
+ab. Anschliessend zu dieser Lösung muss nun einfach der ''freetype``-Ordner um eine Ebene nach oben kopieren werden, da die
+\textit{include}-Pfade in den Headern von ''freetype2`` stellenweiße nicht korrekt sind.\newline
+Falls man nun noch \textit{evas} mit \textit{DirectX-Support} kompilieren möchte, muss man das \textit{DirectX-SDK} herunterladen
+und ''ddraw.h`` in die Verzichnisse ''/opt/cegcc/arm-cegcc/include/w32api/'' und ''/opt/mingw32ce/arm-mingw32ce/include/'' kopieren.
+
+\subsubsection{ecore}
+
+Um \textit{ecore} zu erstellen muss zu allererst eine Änderung im ``winnt.h''-Header vorgenommen werden. Dieser liegt im
+\textit{include}-Verzeichniss des \textit{mingw32ce}-Kompilers.
+
+\begin{verbatim}
+ #define PROCESS_SET_QUOTA 0x0100
+ #define PROCESS_SET_INFORMATION 0x0200
+ #define PROCESS_QUERY_INFORMATION 0x0400
++#define PROCESS_SUSPEND_RESUME 0x0800
+ #define PROCESS_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0xfff)
+
+ #define THREAD_TERMINATE 0x0001
+\end{verbatim}
+
+Der mit ``+'' gekennzeichnete Eintrag ``PROCESS\_SUSPEND\_RESUME'' muss in die Datei ``winnt.h'' eingefügt werden.\newline
+Nachdem dieser Schritt ausgeführt wurde kann nun auch \textit{ecore} kompiliert werden. Dazu wird auch hier wieder zuerst das
+``autogen.sh'' Skript ausgeführt.
+
+\begin{verbatim}
+ ./autogen.sh --prefix=$WINCE_PATH --host=arm-mingw32ce --disable-pthread
+\end{verbatim}
+
+Nachdem dies erfolgreich ausgeführt wurde können nun auch die gleichen zwei Schritte wie bei den vorhergegangenen Programmen
+ausgeführt werden.
+
+\subsubsection{edje}
+
+Auch hier gilt wieder, Dateien herunterladen.
+
+\begin{verbatim}
+ svn co http://svn.enlightenment.org/svn/e/trunk/embryo
+\end{verbatim}
+
+Nachdem die Dateien heruntergeladen wurden, muss auch hier wieder das Skript aufgerufen werden.
+
+\begin{verbatim}
+ ./autogen.sh --prefix=$WINCE_PATH --host=arm-mingw32ce
+\end{verbatim}
+
+Die letzten beiden Schritte sind auch hier wieder kompilieren und installieren.
+
+\begin{verbatim}
+ make ; make install
+\end{verbatim}
+
+\subsubsection{elementary}
+
+Zuerst müssen auch hier die benötigten Daten heruntergeladen werden.
+
+\begin{verbatim}
+svn co http://svn.enlightenment.org/svn/e/trunk/TMP/st/elementary
+\end{verbatim}
+
+Nun muss auch wieder das ``autogen.sh'' Skript heruntergeladen werden.
+
+\begin{verbatim}
+ ./autogen.sh --prefix=$WINCE_PATH --host=arm-mingw32ce --with-edje-cc=$WINCE_PATH/bin/edje_cc
+\end{verbatim}
+
+Um zwei Fehlern vorzubeugen, welche beim erstellen der Test-Files von \textit{elementary} auftreten muss man im in der Datei
+``Makefile.am'' im Ordner ``src/bin/'' alle Vorkommnisse von ``test\_fileselector.c'' entfernen und folgende Zeilen auskommentieren.
+
+\begin{verbatim}
+bin_PROGRAMS = elementary_test
+if BUILD_QUICKLAUNCH
+bin_PROGRAMS += elementary_quicklaunch elementary_run elementary_testql
+endif
+\end{verbatim}
+
+Nun kann das Programm auf gewohnte Art und Weise erstellt und installiert werden.
+
+\begin{verbatim}
+ make ; make install
+\end{verbatim}
+
+\subsubsection{Weitere Schritte}
+
+Im Anschluss an das Erstellen dieser Programme muss nun noch ein Skript in WINCE\_PATH angelegt und dessen Zugriffsrechte abgeändert
+werden.
+
+\begin{verbatim}
+ touch efl_zip.sh
+ chmod 774 efl_zip.sh
+\end{verbatim}
+
+In dieses Skript wird nun der Code eingefügt, welcher unter Anhang 4 zu finden ist.\newline
+Bei Ausführung dieses Skripts werden die vorhandenen \textit{DLL's} nocheinmal komprimiert und alles in einen Ordner mit dem Namen
+``efl'' kopiert. Im Anschluss wird der ganze Ordner noch in einem \textit{Zip-Archiv} komprimiert.
+
+\subsection{Ueberall} \ No newline at end of file