Images erstellen und Programme kompilieren unter OE 1.6: Unterschied zwischen den Versionen

Aus Gemini-Wiki
Zur Navigation springen Zur Suche springen
Zeile 105: Zeile 105:
 
  --19:01:48--  http://core.fluendo.com/gstreamer/src/gst-fluendo-mpegdemux/gst-fluendo-mpegdemux-0.10.15.tar.gz
 
  --19:01:48--  http://core.fluendo.com/gstreamer/src/gst-fluendo-mpegdemux/gst-fluendo-mpegdemux-0.10.15.tar.gz
 
   (try: 3) => `/home/egle/db8000-image/sources/gst-fluendo-mpegdemux-0.10.15.tar.gz'
 
   (try: 3) => `/home/egle/db8000-image/sources/gst-fluendo-mpegdemux-0.10.15.tar.gz'
  Connecting to core.fluendo.com|195.10.6.237|:80...   [/code]
+
  Connecting to core.fluendo.com|195.10.6.237|:80...  
  
 
Und Ihr die angegeben Domain mit selbst mit dem Browser nicht erreichen könnt.
 
Und Ihr die angegeben Domain mit selbst mit dem Browser nicht erreichen könnt.
Zeile 126: Zeile 126:
 
== Image erstellt, wie dann aktualisiseren? ==
 
== Image erstellt, wie dann aktualisiseren? ==
  
Hierzu habe ich auch einen Thread im Ijhad eröffnet der  Antworten bringt ;)
+
Hierzu habe ich auch einen Thread im IHAD eröffnet der  Antworten bringt ;)
  
http://www.i-have-a-dreambox.com/wbb2/thread.php?threadid=101867
+
[http://www.i-have-a-dreambox.com/wbb2/thread.php?threadid=101867 Image erstellt, wie dann aktualisiseren?]
  
  
Zeile 137: Zeile 137:
 
== Programme für die Dreambox Kompilieren ==
 
== Programme für die Dreambox Kompilieren ==
  
Wenn man schon ein OE-Image gebacken hat, heißt das Zauberwort [B]"devshell"[/B].
+
Wenn man schon ein OE-Image gebacken hat, heißt das Zauberwort '''"devshell"'''.
  
 
Also man wechselt ins Built-Verezichnis des entsprechenden Images, hier mal z.B.:
 
Also man wechselt ins Built-Verezichnis des entsprechenden Images, hier mal z.B.:
[B]openembedded/1.5/dm8000/build[/B]
+
'''openembedded/1.5/dm8000/build'''
  
 
Und führt dort folgende Befehle aus:
 
Und führt dort folgende Befehle aus:
[code]source env.source[/code]
+
source env.source
  
 
Danach eben das "devshell" per bitbake ausführen:
 
Danach eben das "devshell" per bitbake ausführen:
[code]bitbake devshell
+
bitbake devshell
NOTE: Psyco JIT Compiler (http://psyco.sf.net) not available. Install it to increase performance.
+
NOTE: Psyco JIT Compiler (http://psyco.sf.net) not available. Install it to increase performance.
NOTE: Using cache in '/media/sda8/Gemini/Entwicklung/openembedded/1.5/dm8000/cache/oe-cache.egle'
+
NOTE: Using cache in '/media/sda8/Gemini/Entwicklung/openembedded/1.5/dm8000/cache/oe-cache.egle'
NOTE: Handling BitBake files: / (4131/4131) [100 %]
+
NOTE: Handling BitBake files: / (4131/4131) [100 %]
NOTE: Parsing finished. 3942 cached, 0 parsed, 161 skipped, 28 masked.
+
NOTE: Parsing finished. 3942 cached, 0 parsed, 161 skipped, 28 masked.
 +
 +
NOTE: build 200901021926: started
 +
 +
OE Build Configuration:
 +
BB_VERSION    = "1.6.8"
 +
OE_REVISION    = "<unknown>"
 +
TARGET_ARCH    = "mipsel"
 +
TARGET_OS      = "linux"
 +
MACHINE        = "dm8000"
 +
DISTRO        = "opendreambox"
 +
DISTRO_VERSION = "1.5.0"
 +
TARGET_FPU    = "soft"
 +
 +
NOTE: package devshell-1.0: started
 +
NOTE: package devshell-1.0-r1: task do_fetch: started
 +
NOTE: package devshell-1.0-r1: task do_fetch: completed
 +
NOTE: package devshell-1.0-r1: task do_unpack: started
 +
NOTE: Unpacking /media/sda8/../openembedded/1.5/openembedded/packages/addons/devshell.bb to /media/sda8/../openembedded/1.5/dm8000/build/tmp/work/devshell-1.0-r1/
 +
NOTE: package devshell-1.0-r1: task do_unpack: completed
 +
NOTE: package devshell-1.0-r1: task do_patch: started
 +
NOTE: package devshell-1.0-r1: task do_patch: completed
 +
NOTE: package devshell-1.0-r1: task do_configure: started
 +
NOTE: package devshell-1.0-r1: task do_configure: completed
 +
NOTE: package devshell-1.0-r1: task do_compile: started
 +
NOTE: package devshell-1.0-r1: task do_compile: completed
 +
NOTE: package devshell-1.0-r1: task do_install: started
 +
NOTE: package devshell-1.0-r1: task do_install: completed
 +
NOTE: package devshell-1.0-r1: task do_package: started
 +
NOTE: package devshell-1.0-r1: task do_package: completed
 +
NOTE: package devshell-1.0-r1: task do_populate_staging: started
 +
NOTE: package devshell-1.0-r1: task do_populate_staging: completed
 +
NOTE: package devshell-1.0-r1: task do_build: started
 +
NOTE: package devshell-1.0-r1: task do_build: completed
 +
NOTE: package devshell-1.0: completed
 +
NOTE: build 200901021926: completed
 +
Build statistics:
 +
  Attempted builds: 1
  
NOTE: build 200901021926: started
+
So damit hat man nun die '''build environment''' geschaffen um mit fremden oder
 +
eigene geschriebene Sourcen kompilieren zu konnen, zu finden dann in '''/build/tmp/deploy/addons'''
  
OE Build Configuration:
 
BB_VERSION    = "1.6.8"
 
OE_REVISION    = "<unknown>"
 
TARGET_ARCH    = "mipsel"
 
TARGET_OS      = "linux"
 
MACHINE        = "dm8000"
 
DISTRO        = "opendreambox"
 
DISTRO_VERSION = "1.5.0"
 
TARGET_FPU    = "soft"
 
  
NOTE: package devshell-1.0: started
+
Im Verzeichnis '''/build/tmp/deploy/addons''' findet man nun die '''mipsel-linux-opendreambox-dm8000-devshel'''l
NOTE: package devshell-1.0-r1: task do_fetch: started
 
NOTE: package devshell-1.0-r1: task do_fetch: completed
 
NOTE: package devshell-1.0-r1: task do_unpack: started
 
NOTE: Unpacking /media/sda8/Gemini/Entwicklung/openembedded/1.5/openembedded/packages/addons/devshell.bb to /media/sda8/Gemini/Entwicklung/openembedded/1.5/dm8000/build/tmp/work/devshell-1.0-r1/
 
NOTE: package devshell-1.0-r1: task do_unpack: completed
 
NOTE: package devshell-1.0-r1: task do_patch: started
 
NOTE: package devshell-1.0-r1: task do_patch: completed
 
NOTE: package devshell-1.0-r1: task do_configure: started
 
NOTE: package devshell-1.0-r1: task do_configure: completed
 
NOTE: package devshell-1.0-r1: task do_compile: started
 
NOTE: package devshell-1.0-r1: task do_compile: completed
 
NOTE: package devshell-1.0-r1: task do_install: started
 
NOTE: package devshell-1.0-r1: task do_install: completed
 
NOTE: package devshell-1.0-r1: task do_package: started
 
NOTE: package devshell-1.0-r1: task do_package: completed
 
NOTE: package devshell-1.0-r1: task do_populate_staging: started
 
NOTE: package devshell-1.0-r1: task do_populate_staging: completed
 
NOTE: package devshell-1.0-r1: task do_build: started
 
NOTE: package devshell-1.0-r1: task do_build: completed
 
NOTE: package devshell-1.0: completed
 
NOTE: build 200901021926: completed
 
Build statistics:
 
  Attempted builds: 1[/code]
 
 
 
So damit hat man nun die [B]build environment [/b] geschaffen um mit fremden oder
 
eigene geschriebene Sourcen kompilieren zu konnen, zu finden dann in [B]/build/tmp/deploy/addons[/B]
 
 
 
 
 
Im Verzeichnis [B]/build/tmp/deploy/addons[/B] findet man nun die [B]mipsel-linux-opendreambox-dm8000-devshell[/B]
 
 
Führt man dies nun in der Konsole (Terminal) aus sieht man vorne nun folgendes stehen:
 
Führt man dies nun in der Konsole (Terminal) aus sieht man vorne nun folgendes stehen:
[code][OE::mipsel-linux-opendreambox-dm8000]:~$ [/code]
+
[OE::mipsel-linux-opendreambox-dm8000]:~$  
  
  
Zeile 204: Zeile 204:
 
Ich rede hier von dem "Hello World", was ich aber natürlich abgewandelt habe..
 
Ich rede hier von dem "Hello World", was ich aber natürlich abgewandelt habe..
  
Wir erstellen uns erstmal noch ein Test-Verzeichnis in [B]/build/tmp/deploy/addons[/B] Namens test.
+
Wir erstellen uns erstmal noch ein Test-Verzeichnis in '''/build/tmp/deploy/addons''' Namens test.
  
[code][OE::mipsel-linux-opendreambox-dm8000]:/..../build/tmp/deploy/addons$ mkdir test[/code]
+
[OE::mipsel-linux-opendreambox-dm8000]:/..../build/tmp/deploy/addons$ mkdir test
  
 
Wechseln nun ins neu erstellte Verzeichnis:
 
Wechseln nun ins neu erstellte Verzeichnis:
[code][OE::mipsel-linux-opendreambox-dm8000]:/..../build/tmp/deploy/addons$ cd test
+
[OE::mipsel-linux-opendreambox-dm8000]:/..../build/tmp/deploy/addons$ cd test
[OE::mipsel-linux-opendreambox-dm8000]:/..../build/tmp/deploy/addons/test$[/code]
+
[OE::mipsel-linux-opendreambox-dm8000]:/..../build/tmp/deploy/addons/test$[/code]
  
  
 
Dann nehmen wir uns einen guten Editor und erstellen unser erstes eigenes C++ Programm...
 
Dann nehmen wir uns einen guten Editor und erstellen unser erstes eigenes C++ Programm...
[code]#include <stdio.h>
+
#include <stdio.h>
  
int main(int argc, char *argv[])
+
int main(int argc, char *argv[])
{
+
{
  printf("Welcome on your Dreambox 8000\n");
+
    printf("Welcome on your Dreambox 8000\n");
  return 0;
+
    return 0;
}[/code]
+
}
  
 
Und speichern dieses mit dem Namen "Hello_Dreambox.c" im Testverzeichis ab.
 
Und speichern dieses mit dem Namen "Hello_Dreambox.c" im Testverzeichis ab.
Zeile 226: Zeile 226:
  
 
Im Terminal versuchen wir nun unser Programm zu kompilieren:
 
Im Terminal versuchen wir nun unser Programm zu kompilieren:
[code]mipsel-linux-gcc Hello_Dreambox.c -o hello-dreambox[/code]
+
mipsel-linux-gcc Hello_Dreambox.c -o hello-dreambox
  
 
Da ich im OE der Dreambox 8000 bin und diese ja den "mipsel" als CPU nutzt kompilieren wir das
 
Da ich im OE der Dreambox 8000 bin und diese ja den "mipsel" als CPU nutzt kompilieren wir das
ganze als "mipsel-linux-gcc", der fertige Programmname der "bindatei" lautet dann [B]hello-dreambox[/B]
+
ganze als "mipsel-linux-gcc", der fertige Programmname der "bindatei" lautet dann '''hello-dreambox'''
  
 
nun finden wir in unserem Testverzeichnis folgende Daten:
 
nun finden wir in unserem Testverzeichnis folgende Daten:
  
- Hello_Dreambox.c
+
* Hello_Dreambox.c
- hello-dreambox (das fertige Programm als Bindatei)
+
* hello-dreambox (das fertige Programm als Bindatei)
  
 
Zum testen ob es funktioniert, können wir unser erstes Programm auf die
 
Zum testen ob es funktioniert, können wir unser erstes Programm auf die
Zeile 240: Zeile 240:
 
und versuchen unser erstes erstelltes Programm auszuführen ;)
 
und versuchen unser erstes erstelltes Programm auszuführen ;)
  
[code]root@dm8000:~# cd /tmp
+
root@dm8000:~# cd /tmp
root@dm8000:/tmp# ./hello-dreambox
+
root@dm8000:/tmp# ./hello-dreambox
Welcome on your Dreambox 8000
+
Welcome on your Dreambox 8000
root@dm8000:/tmp#[/code]
+
root@dm8000:/tmp#
  
  
Zeile 250: Zeile 250:
  
 
Das nächste was wir nun mal versuchen können wäre ein Tarball zu entpacken und
 
Das nächste was wir nun mal versuchen können wäre ein Tarball zu entpacken und
diesen zu kompilieren, hier nehme ich mal als Beispiel das [B]tar-1.21-20081229.tar.gz[/B]
+
diesen zu kompilieren, hier nehme ich mal als Beispiel das '''tar-1.21-20081229.tar.gz'''
 
Dies kann an hier downloaden: ftp://download.gnu.org.ua/pub/alpha/tar/
 
Dies kann an hier downloaden: ftp://download.gnu.org.ua/pub/alpha/tar/
  
Zeile 256: Zeile 256:
 
und wechlsen dann ins entpackte Tarverzeichnis.
 
und wechlsen dann ins entpackte Tarverzeichnis.
  
[code][OE::mipsel-linux-opendreambox-dm8000]:/.../deploy/addons$ cd tar-1.21-20081229/[/code]
+
[OE::mipsel-linux-opendreambox-dm8000]:/.../deploy/addons$ cd tar-1.21-20081229/
  
 
Tarballs werden normalerweise ja im bekannten dreisatz kompiliert
 
Tarballs werden normalerweise ja im bekannten dreisatz kompiliert
  
./configure
+
./configure
./make
+
make
,/make install
+
make install
  
 
Da wir aber in einer OE-Umgebung sind können wir das aber so nicht anwenden.
 
Da wir aber in einer OE-Umgebung sind können wir das aber so nicht anwenden.
  
 
Hier geben wir nun folgendes ein:
 
Hier geben wir nun folgendes ein:
[code]oe_runconf[/code]
+
oe_runconf
  
 
Das ganze sollte hierbei Fehlerfrei durchlaufen und so ungefähr aussehen:
 
Das ganze sollte hierbei Fehlerfrei durchlaufen und so ungefähr aussehen:
[code]config.status: executing depfiles commands
+
config.status: executing depfiles commands
config.status: executing po-directories commands
+
config.status: executing po-directories commands
config.status: creating po/POTFILES
+
config.status: creating po/POTFILES
config.status: creating po/Makefile
+
config.status: creating po/Makefile
config.status: executing tests/atconfig commands
+
config.status: executing tests/atconfig commands
[OE::mipsel-linux-opendreambox-dm8000]:/.../1.5/dm8000/build/tmp/deploy/addons/tar-1.21-20081229$[/code]
+
[OE::mipsel-linux-opendreambox-dm8000]:/.../1.5/dm8000/build/tmp/deploy/addons/tar-1.21-20081229$[/code]
  
 
nun können wir da das Makefile geschrieben wurde es auch kompilieren.
 
nun können wir da das Makefile geschrieben wurde es auch kompilieren.
[code]make[/code]
+
make
  
 
auch dies ist wieder sauber durchgelaufen (zum Glück):
 
auch dies ist wieder sauber durchgelaufen (zum Glück):
[code]make[2]: Verlasse Verzeichnis '/media/sda8/oe-build/openembedded/1.5/dm8000/build/tmp/deploy/addons/tar-1.21-20081229'
+
make[2]: Verlasse Verzeichnis '/media/sda8/oe-build/openembedded/1.5/dm8000/build/tmp/deploy/addons/tar-1.21-20081229'
make[1]: Verlasse Verzeichnis '/media/sda8/oe-build/openembedded/1.5/dm8000/build/tmp/deploy/addons/tar-1.21-20081229'
+
make[1]: Verlasse Verzeichnis '/media/sda8/oe-build/openembedded/1.5/dm8000/build/tmp/deploy/addons/tar-1.21-20081229'
[OE::mipsel-linux-opendreambox-dm8000]:/media/sda8/oe-build/openembedded/1.5/dm8000/build/tmp/deploy/addons/tar-1.21-20081229$[/code]
+
[OE::mipsel-linux-opendreambox-dm8000]:/media/sda8/oe-build/openembedded/1.5/dm8000/build/tmp/deploy/addons/tar-1.21-20081229$
  
  
Im Unterverzeichnis [B]src[/B] befindet sich hier nun auch das Fertige Progamm [B]tar[/B] als Binary
+
Im Unterverzeichnis '''src''' befindet sich hier nun auch das Fertige Progamm '''tar''' als Binary
 
und könnte nun auch in die Dreambox kopiert und benutzt werden.
 
und könnte nun auch in die Dreambox kopiert und benutzt werden.
  
 
Weitere Infos und Hilfe findet man auch hier:
 
Weitere Infos und Hilfe findet man auch hier:
  
http://www.i-have-a-dreambox.com/wbb2/thread.php?threadid=93129
+
[http://www.i-have-a-dreambox.com/wbb2/thread.php?threadid=93129
 +
Was brauche ich um eigene Programme auf der Dreambox 7025 zu kompilieren?]

Version vom 11. Januar 2009, 15:33 Uhr

Erstellen eines eigenen CVS/OE images

hier will ich mal versuchen auf zu zeigen wie man aus dem CVS/OE ein Image erstellen kann. Und anschließend ein "Programm für die Dreambox selber erstellen bzw. kompilieren kann...


Hier schreibe ich mal das neu auf so das es evlt. Jeder versteht


1. ein Linuxsystem installieren bzw. einrichten (z.B.(K)Ubuntu)

2. adenin "install.sh" Script verwenden, ist hier zu finden: CVS- sowie OE-Installation und Imagebau für Anfänger (und EgLe ;) )

3. Images erstellen hier gibt es ja mehrere Möglichkeiten.

  • ein CVS-Image für die älteren Dreamboxen
  • dm500
  • dm56x0 (dm5600/dm5620)
  • DM7000
  • ein OE 1.5 oder ein OE 1.6 Image für die neueren Boxen
  • dm500plus
  • dm600pvr
  • dm7020
  • dm7025
  • dm800
  • dm8000

Wer beim Kompilieren eines Images auf Probleme stößt, der sollte sich im Bereich

Developer Bereich CVS/Openembedded

etwas genauer umsehen je nachdem was für ein Image er eben ausprobiert.

Ist es ein Enigma1 oder Enigma2 Image?

Ist es ein OE 1.5 oder ein OE 1.6 Image?

Wer z.B. Probleme haben sollte mit einem OE 1.5 Image der DB7025 kann sich mal die Fehler ansehen im Thread "OE-git 1.5 DM7025" gleiches gibt es auch für "OE-git 1.6 DM7025".

Oder wenn er in den Threads keine Lösung für sein Problem findet eben ein neuen Thema eröffnen. Um aber die Übersicht zu wahren wäre es nett wenn man die Betreffzeile genauso "Treffend" formulieren würde.

Weiterhin sollte man ggff auch die Board-Suche verwenden.

Bricht z.B. das Kompilieren mit folgender Meldung ab:

NOTE: package dreambox-image-1.0-r0: task do_rootfs: started
ERROR: function do_rootfs failed
ERROR: see log in /media/sda8/Dreambox-Build/openembedded/1.5/dm7025/build/tmp/work/dreambox-image-1.0-r0/temp/log.do_rootfs.6697
NOTE: Task failed: /media/sda8/Dreambox-Build/openembedded/1.5/dm7025/build/tmp/work/dreambox-image-1.0-r0/temp/log.do_rootfs.6697
NOTE: package dreambox-image-1.0-r0: task do_rootfs: failed
ERROR: TaskFailed event exception, aborting
NOTE: package dreambox-image-1.0: failed
ERROR: Build of dreambox-image failed
make: *** [image] Fehler 1 

Kann man in der Bordsuche z.B. recht schön nach [B]ERROR: function do_rootfs failed[/B] suchen lassen.


Wenn es also nun zu abbrüchen kommt, sollte man versuchen die Fehlermeldung zu entschlüsseln und ggf. ein fehlendes Paket nachinstallieren was man noch benötigt oder im CVS Bereich dann ein Posting eröffnen ;)


Naja, einige Fehler möchte ich dokumentieren ;)

ERROR: gstreamer-0.10.21: http://gstreamer.freedesktop.org/src/gstreamer/gstreamer-0.10.21.tar.bz2 has no entry in conf/checksums.ini, not checking URI
ERROR: Error in executing:
ERROR: Exception:<type 'exceptions.SystemExit'> Message:1
ERROR: Printing the environment of the function
ERROR: Error in executing:
ERROR: Exception:<type 'exceptions.SystemExit'> Message:1
ERROR: Printing the environment of the function
ERROR: Build of /home/egle/db8000-image/dm8000/openembedded/packages/gstreamer/gstreamer_0.10.21.bb do_fetch failed
ERROR: Task 1400 (/home/egle/db8000-image/dm8000/openembedded/packages/gstreamer/gstreamer_0.10.21.bb, do_fetch) failed
NOTE: Tasks Summary: Attempted 286 tasks of which 0 didn't need to be rerun and 1 failed.
ERROR: '/home/egle/db8000-image/dm8000/openembedded/packages/gstreamer/gstreamer_0.10.21.bb' failed
make: *** [image] Fehler 1

Wenn Ihr sowas bekommt wo Ihr seht das der Download fehlgeschlagen ist. Und Ihr aber seht das dies in den sourcen alles aber runtergeladen wurde.

Könnte es euch helfen den checksum-test zu umgehen...

rm openembedded/conf/checksums.ini

Oder wie ich es einfach mit dem Dateimanager gelöscht ;(

Dann geht das Kompilieren weiter, aber es erscheint solch eine Meldung als im Fenster:

NOTE: No conf/checksums.ini found, not checking checksums


Sollte das ganze mal so abbrechen (connetction time out)

Resolving core.fluendo.com... 195.10.6.237
Connecting to core.fluendo.com|195.10.6.237|:80... failed: Connection timed out.
Retrying.
--18:58:37--  http://core.fluendo.com/gstreamer/src/gst-fluendo-mpegdemux/gst-fluendo-mpegdemux-0.10.15.tar.gz
 (try: 2) => `/home/egle/db8000-image/sources/gst-fluendo-mpegdemux-0.10.15.tar.gz'
Connecting to core.fluendo.com|195.10.6.237|:80... failed: Connection timed out.
Retrying.
--19:01:48--  http://core.fluendo.com/gstreamer/src/gst-fluendo-mpegdemux/gst-fluendo-mpegdemux-0.10.15.tar.gz
 (try: 3) => `/home/egle/db8000-image/sources/gst-fluendo-mpegdemux-0.10.15.tar.gz'
Connecting to core.fluendo.com|195.10.6.237|:80... 

Und Ihr die angegeben Domain mit selbst mit dem Browser nicht erreichen könnt. Ist der entsprechende Server wohl wirklich zur Zeit nicht zu erreichen.

Hier müsst ihr euch eben gedulten, das ganze mal einen Tag später wieder Probieren. oder einen Workaround zur Hilfe nehmen ;)

Sucht euch das entsprechende Tarball von einer anderen Quelle und kopiert es dann in Ordner wo die Sourcen abgelegt werden hier im Beispiel dann eben "/openembedded/sources". Danach kann es dann weitergehen....

Einige Stunden an Zeit sollte man sich aber schon einplanen ;)




Image erstellt, wie dann aktualisiseren?

Hierzu habe ich auch einen Thread im IHAD eröffnet der Antworten bringt ;)

Image erstellt, wie dann aktualisiseren?




Programme für die Dreambox Kompilieren

Wenn man schon ein OE-Image gebacken hat, heißt das Zauberwort "devshell".

Also man wechselt ins Built-Verezichnis des entsprechenden Images, hier mal z.B.: openembedded/1.5/dm8000/build

Und führt dort folgende Befehle aus:

source env.source

Danach eben das "devshell" per bitbake ausführen:

bitbake devshell
NOTE: Psyco JIT Compiler (http://psyco.sf.net) not available. Install it to increase performance.
NOTE: Using cache in '/media/sda8/Gemini/Entwicklung/openembedded/1.5/dm8000/cache/oe-cache.egle'
NOTE: Handling BitBake files: / (4131/4131) [100 %]
NOTE: Parsing finished. 3942 cached, 0 parsed, 161 skipped, 28 masked.

NOTE: build 200901021926: started

OE Build Configuration:
BB_VERSION     = "1.6.8"
OE_REVISION    = "<unknown>"
TARGET_ARCH    = "mipsel"
TARGET_OS      = "linux"
MACHINE        = "dm8000"
DISTRO         = "opendreambox"
DISTRO_VERSION = "1.5.0"
TARGET_FPU     = "soft"

NOTE: package devshell-1.0: started
NOTE: package devshell-1.0-r1: task do_fetch: started
NOTE: package devshell-1.0-r1: task do_fetch: completed
NOTE: package devshell-1.0-r1: task do_unpack: started
NOTE: Unpacking /media/sda8/../openembedded/1.5/openembedded/packages/addons/devshell.bb to /media/sda8/../openembedded/1.5/dm8000/build/tmp/work/devshell-1.0-r1/
NOTE: package devshell-1.0-r1: task do_unpack: completed
NOTE: package devshell-1.0-r1: task do_patch: started
NOTE: package devshell-1.0-r1: task do_patch: completed
NOTE: package devshell-1.0-r1: task do_configure: started
NOTE: package devshell-1.0-r1: task do_configure: completed
NOTE: package devshell-1.0-r1: task do_compile: started
NOTE: package devshell-1.0-r1: task do_compile: completed
NOTE: package devshell-1.0-r1: task do_install: started
NOTE: package devshell-1.0-r1: task do_install: completed
NOTE: package devshell-1.0-r1: task do_package: started
NOTE: package devshell-1.0-r1: task do_package: completed
NOTE: package devshell-1.0-r1: task do_populate_staging: started
NOTE: package devshell-1.0-r1: task do_populate_staging: completed
NOTE: package devshell-1.0-r1: task do_build: started
NOTE: package devshell-1.0-r1: task do_build: completed
NOTE: package devshell-1.0: completed
NOTE: build 200901021926: completed
Build statistics:
  Attempted builds: 1

So damit hat man nun die build environment geschaffen um mit fremden oder eigene geschriebene Sourcen kompilieren zu konnen, zu finden dann in /build/tmp/deploy/addons


Im Verzeichnis /build/tmp/deploy/addons findet man nun die mipsel-linux-opendreambox-dm8000-devshell Führt man dies nun in der Konsole (Terminal) aus sieht man vorne nun folgendes stehen:

[OE::mipsel-linux-opendreambox-dm8000]:~$ 


So nun wären wir in dieser Umgebung bereit zum Kompilieren für die Dreambox ;)

Als kleines Beispiel für ein eigenes erstes Programm für die Dreambox will ich mal das "wohl bekannteste Programm der Welt als Test misbrauchen. Ich rede hier von dem "Hello World", was ich aber natürlich abgewandelt habe..

Wir erstellen uns erstmal noch ein Test-Verzeichnis in /build/tmp/deploy/addons Namens test.

[OE::mipsel-linux-opendreambox-dm8000]:/..../build/tmp/deploy/addons$ mkdir test

Wechseln nun ins neu erstellte Verzeichnis:

[OE::mipsel-linux-opendreambox-dm8000]:/..../build/tmp/deploy/addons$ cd test
[OE::mipsel-linux-opendreambox-dm8000]:/..../build/tmp/deploy/addons/test$[/code]


Dann nehmen wir uns einen guten Editor und erstellen unser erstes eigenes C++ Programm...

#include <stdio.h>
int main(int argc, char *argv[])
{
   printf("Welcome on your Dreambox 8000\n");
   return 0;
}

Und speichern dieses mit dem Namen "Hello_Dreambox.c" im Testverzeichis ab. Das .c am Ende zeichnet diese Textdatei als C-code aus ;)

Im Terminal versuchen wir nun unser Programm zu kompilieren:

mipsel-linux-gcc Hello_Dreambox.c -o hello-dreambox

Da ich im OE der Dreambox 8000 bin und diese ja den "mipsel" als CPU nutzt kompilieren wir das ganze als "mipsel-linux-gcc", der fertige Programmname der "bindatei" lautet dann hello-dreambox

nun finden wir in unserem Testverzeichnis folgende Daten:

  • Hello_Dreambox.c
  • hello-dreambox (das fertige Programm als Bindatei)

Zum testen ob es funktioniert, können wir unser erstes Programm auf die Dreambox ins Tempverzeichnis kopieren und loggen uns in die Dreambox ins Tempverezeichnis ein und versuchen unser erstes erstelltes Programm auszuführen ;)

root@dm8000:~# cd /tmp
root@dm8000:/tmp# ./hello-dreambox
Welcome on your Dreambox 8000
root@dm8000:/tmp#


Voila unser erstes selbst geschriebenes und Kompiliertes Programm für die Dreambox....


Das nächste was wir nun mal versuchen können wäre ein Tarball zu entpacken und diesen zu kompilieren, hier nehme ich mal als Beispiel das tar-1.21-20081229.tar.gz Dies kann an hier downloaden: ftp://download.gnu.org.ua/pub/alpha/tar/

Nun entpacken wir den Tarball wieder in unser "addons" Verzeichnis und wechlsen dann ins entpackte Tarverzeichnis.

[OE::mipsel-linux-opendreambox-dm8000]:/.../deploy/addons$ cd tar-1.21-20081229/

Tarballs werden normalerweise ja im bekannten dreisatz kompiliert

./configure
make
make install

Da wir aber in einer OE-Umgebung sind können wir das aber so nicht anwenden.

Hier geben wir nun folgendes ein:

oe_runconf

Das ganze sollte hierbei Fehlerfrei durchlaufen und so ungefähr aussehen:

config.status: executing depfiles commands
config.status: executing po-directories commands
config.status: creating po/POTFILES
config.status: creating po/Makefile
config.status: executing tests/atconfig commands
[OE::mipsel-linux-opendreambox-dm8000]:/.../1.5/dm8000/build/tmp/deploy/addons/tar-1.21-20081229$[/code]

nun können wir da das Makefile geschrieben wurde es auch kompilieren.

make

auch dies ist wieder sauber durchgelaufen (zum Glück):

make[2]: Verlasse Verzeichnis '/media/sda8/oe-build/openembedded/1.5/dm8000/build/tmp/deploy/addons/tar-1.21-20081229'
make[1]: Verlasse Verzeichnis '/media/sda8/oe-build/openembedded/1.5/dm8000/build/tmp/deploy/addons/tar-1.21-20081229'
[OE::mipsel-linux-opendreambox-dm8000]:/media/sda8/oe-build/openembedded/1.5/dm8000/build/tmp/deploy/addons/tar-1.21-20081229$


Im Unterverzeichnis src befindet sich hier nun auch das Fertige Progamm tar als Binary und könnte nun auch in die Dreambox kopiert und benutzt werden.

Weitere Infos und Hilfe findet man auch hier:

[http://www.i-have-a-dreambox.com/wbb2/thread.php?threadid=93129

Was brauche ich um eigene Programme auf der Dreambox 7025 zu kompilieren?]