OpenEmbedded und GP2X


thebohemian

Still Fresh
Joined
Nov 29, 2005
Messages
86
Hi,
da ich den GP2X primär als kleinen Computer ansehe und nicht nur als Spielekonsole, möchte ich einiges an (freier) Software darauf zum laufen bekommen. Neben Programmen benötige ich insbesondere Bibliotheken und um solche richtig zu kompilieren braucht es etwas Erfahrung im Bereich Crosskompilierung, die ich leider nicht habe.

Nun hat man mir OpenEmbedded nahe gelegt und ich habe festgestellt, dass das eigentlich genau das Richtige ist. Es bietet eine voll konfigurierbare Buildumgebung und (das allerwichtigste) tausende Installationsanweisungen (bitbake files) für diverse freie Softwareprojekte.

Ich fange gerade an mich mit OpenEmbedded anzufreunden. Wer sich ebenfalls mit OE beschäftigt und Probleme bekommt, kann ja hier einfach posten und wir können versuchen das Problem gemeinsam zu lösen.

In meinen Träumen wird es einmal eine komplette GNU/Linux Distribution für den GP2X geben - mit Paketmanagement, automatischen Updates (auch vom Kernel) und allem Pipapo :) Ich denke OpenEmbedded ist der schnellste Weg dahin ....
 
So. Ich habe nach besten Wissen und Gewissen eine distro Konfigurationsdatei geschrieben. Diese kann in der local.conf angegeben werden. Soweit es ging habe ich Programm und Bibliotheksversionen angegeben, wie sie bereits auf dem GP2X vorhanden sind (zB glibc 2.2.5). Leider beinhaltet OE nicht mehr den Uralt gcc 2.95.3 und auch nicht die steinalten binutils.

Momentan ist meine Toolchain noch am bauen. Ob das alles klappt, kann ich also erst in ein paar Stunden sagen.

gp2xoe.conf (nach org.openembedded.dev/conf/distro packen):
Code:
<i>
</i>#@TYPE: Distribution
#@NAME: GP2X OpenEmbedded GNU/Linux
#@DESCRIPTION: Distribution configuration for the GP2X OpenEmbedded GNU/Linux

# This package is primarily aimed at the GP2X handheld

DISTRO_VERSION=0

INHERIT += "package_ipk debian"

TARGET_OS = "linux"

TARGET_FPU = "soft"

PREFERRED_PROVIDERS += " virtual/${TARGET_PREFIX}gcc-initial:gcc-cross-initial"
PREFERRED_PROVIDERS += " virtual/${TARGET_PREFIX}gcc:gcc-cross"
PREFERRED_PROVIDERS += " virtual/${TARGET_PREFIX}g++:gcc-cross"
PREFERRED_PROVIDERS += " virtual/${TARGET_PREFIX}libc-for-gcc:uclibc"

PREFERRED_VERSION_gcc-cross-initial = "3.3.4"
PREFERRED_VERSION_gcc-cross = "3.3.4"
PREFERRED_VERSION_gcc-cross-sdk = "3.3.4" 
PREFERRED_VERSION_gcc = "3.3.4"

PREFERRED_VERSION_glibc = "2.2.5"
PREFERRED_VERSION_binutils = "2.16"
PREFERRED_VERSION_binutils-cross = "2.16"

PREFERRED_VERSION_linux-libc-headers = "2.6.11.1"

PREFERRED_VERSION_ncurses = "5.3"
PREFERRED_VERSION_zlib = "1.2.3"

PREFERRED_VERSION_libsdl-native = "1.2.7"

IMAGE_NAME = "${IMAGE_BASENAME}-${MACHINE}_${BUILDNAME}"
KERNEL_IMAGE_NAME = "kernel-${KV}-${MACHINE}_${BUILDNAME}"

Und hier ist meine local.conf:
Code:
<i>
</i>#
# OpenEmbedded local configuration file (sample)
#
# Please visit the Wiki at http://openembedded.org/ for more info.
#
#
# Be SURE to read this file in its entirety and the GettingStarted page on the
# wiki before proceeding.
#
# Once you have done that, remove the line at the end of this
# file and build away.
# 
# WARNING: lines starting with a space (' ') will result in parse failures.
# Remove '# ' from commented lines to activate them.
#
# NOTE: Do NOT use $HOME in your paths, BitBake does NOT expand ~ for you.  If you
# must have paths relative to your homedir use ${HOME} (note the {}'s there
# you MUST have them for the variable expansion to be done by BitBake).  Your
# paths should all be absolute paths (They should all start with a / after
# expansion.  Stuff like starting with ${HOME} or ${TOPDIR} is ok).

# Use this to specify where BitBake should place the downloaded sources into
DL_DIR = "${HOME}/devel/openembedded-devel/sources"

# Delete the line below. Then specify which .bb files to consider for
# your build. Typically this will be something like BBFILES = "/path/to/openembedded/packages/*/*.bb"
BBFILES := "${HOME}/devel/openembedded-devel/org.openembedded.dev/packages/*/*.bb"

# Use the BBMASK below to instruct BitBake to _NOT_ consider some .bb files
# This is a regulary expression, so be sure to get your parenthesis balanced.
BBMASK = ""

# Uncomment this if you want to use a prebuilt toolchain. You will need to
# provide packages for toolchain and additional libraries yourself. You also
# have to set PATH in your environment to make sure BitBake finds additional binaries.
# Note: You will definitely need to say:
#     ASSUME_PROVIDED = "virtual/arm-linux-gcc-2.95"
# to build any of two Linux 2.4 Embedix kernels,
# i.e. openzaurus-sa-2.4.18 and openzaurus-pxa-2.4.18 - and don't forget
# to rename the binaries as instructed in the Wiki.
# ASSUME_PROVIDED = "virtual/${TARGET_PREFIX}gcc virtual/libc"

# Select between multiple alternative providers, if more than one is eligible.
PREFERRED_PROVIDERS = "virtual/qte:qte virtual/libqpe:libqpe-opie"
PREFERRED_PROVIDERS += " virtual/libsdl:libsdl-native"
PREFERRED_PROVIDERS += " virtual/${TARGET_PREFIX}gcc-initial:gcc-cross-initial"
PREFERRED_PROVIDERS += " virtual/${TARGET_PREFIX}gcc:gcc-cross"
PREFERRED_PROVIDERS += " virtual/${TARGET_PREFIX}g++:gcc-cross"

# Uncomment this to specify where BitBake should create its temporary files.
# Note that a full build of everything in OpenEmbedded will take GigaBytes of hard
# disk space, so make sure to free enough space. The default TMPDIR is
# <build directory>/tmp
# Don't use symlinks in in the path to avoid problems
# TMPDIR = /usr/local/projects/oetmp

# Uncomment this to specify a machine to build for. See the conf directory
# for machines currently known to OpenEmbedded.
MACHINE = "tune-arm9tdmi"

# Use this to specify the target architecture. Note that this is only
# needed when building for a machine not known to OpenEmbedded. Better use
# the MACHINE attribute (see above)
TARGET_ARCH = "arm"

# Use this to specify the target operating system.  The default is "linux",
# for a normal linux system with glibc. Set this to "linux-uclibc" if you want
# to build a uclibc based system.
# TARGET_OS = "linux"
TARGET_OS = "linux"

# Uncomment this to select a distribution policy. See the conf directory
# for distributions currently known to OpenEmbedded.
# Although they no longer contain version number in the (file-)name
# familiar-unstable and openzaurus-unstable are so called "versioned"
# distros, i.e. they explicitely select specific versions of various
# packages.
# Stay away from unversioned distros unless you really know what you are doing
DISTRO = "gp2xoe"

# Uncomment this to select a particular kernel version if supported by 
# your MACHINE setting. Currently only supported on Zaurus Clamshells.
# KERNEL_VERSION = "2.6"

# Uncomment one of these to build packages during the build process.
# This is done automatically if you set DISTRO (see above)
# INHERIT = "package_ipk"
# INHERIT = "package_tar"

# Add the required image file system types below. Valid are jffs2, tar, cramfs and ext2
IMAGE_FSTYPES = "jffs2"

# Uncomment this to disable the parse cache (not recommended).
# CACHE = ""

# Uncomment this if you want BitBake to emit debugging output
# BBDEBUG = "yes"

# Uncomment these two if you want BitBake to build images useful for debugging. 
# Note that INHIBIT_PACKAGE_STRIP needs a package format to be defined
# DEBUG_BUILD = "1"
# INHIBIT_PACKAGE_STRIP = "1"

# Uncomment these to build a package such that you can use gprof to profile it.
# NOTE: This will only work with 'linux' targets, not
# 'linux-uclibc', as uClibc doesn't provide the necessary
# object files.  Also, don't build glibc itself with these
# flags, or it'll fail to build.
#
# PROFILE_OPTIMIZATION = "-pg"
# SELECTED_OPTIMIZATION = "${PROFILE_OPTIMIZATION}"
# LDFLAGS =+ "-pg"

# Uncomment this to enable parallel make.
# This allows make to spawn mutliple processes to take advantage of multiple 
# processors. Useful on SMP machines. This may break some packages - we're
# in the process of marking these so let us know if you find any.
# PARALLEL_MAKE = "-j 4"

# Uncomment this if you want BitBake to emit the log if a build fails.
BBINCLUDELOGS = "yes"

# Specifies a location to search for pre-generated tarballs when fetching
# a cvs:// URI. Outcomment this, if you always want to pull directly from CVS.
CVS_TARBALL_STASH = "http://www.oesources.org/source/current/"

EDIT: Die OE Leute haben ein tolles Wiki (http://http://oe.handhelds.org/cgi-bin/moin.cgi), wo sie die ganzen Sachen erklären. Kann ich nur wärmstens empfehlen.
 
Wie geil!!!

Es funzt!

Der GCC 3.3.4 cross compiler brauch ein Patch, sonst kompiliert er selbst nicht. Die betroffene Datei befindet sich in ${OE_HOME}/build/tmp/work/gcc-cross-3.3.4-r2/gcc-3.3.4/gcc/f
Code:
<i>
</i>--- com.h.orig  2006-01-05 08:07:51.000000000 +0100
+++ com.h       2006-01-05 08:06:47.000000000 +0100
@@ -234,7 +234,7 @@
 tree ffecom_get_invented_identifier (const char *pattern, ...)
   ATTRIBUTE_PRINTF_1;

-ffeinfoKindtype ffecom_gfrt_basictype (ffecomGfrt ix);
+/* ffeinfoKindtype ffecom_gfrt_basictype (ffecomGfrt ix); */

 ffeinfoKindtype ffecom_gfrt_kindtype (ffecomGfrt ix);
 void ffecom_init_0 (void);

Das Patch kann eingespielt werden, wenn der Fehler auftritt (irgendwann beim erstellen der Toolchain.)

Tipp:
Lies unbedingt die Doku von OE, dann ist dir recht schnell klar wie der Hase läuft. Hab keine Furcht vor der Fülle an neuen Infos! Als ich mein erstes Posting verfasst habe, wusste ich nur dass es sowas wie OE gibt, nicht aber was es kann und was mich erwarten würde. Jetzt einige Stunden später habe ich eine richtige (installierbare) glibc bauen lassen und bekomme sogar JamVM mit Classpath zum laufen.

Ganz dringend ans Herz legen möchte ich dir im Nachahmungsfall das USB Gadget Serial Modul, denn mit sterm macht das alles nicht son Spass. Minicom regelt da schon eher. :)

Wenn du deine Toolchain und das Programm deiner Wahl gebaut hast, kannst du hiermit weitermachen. Es geht im Prinzip darum, dass nicht-OpenEmbedded-kennende Linux auf dem GP2X mit ipkg, einer Paketverwaltung wie apt-get oder emerge, aufzumotzen.

1) Das für ARM-kompilierte ipkg_0.99.154-r2_arm.ipk und libipkg0_0.99.154-r2_arm.ipk auf deinem Rechner auspacken. Dafür das Programm ipkg-unbuild benutzen. Wenn es nicht in deiner Distri enthalten ist, baue mit bitbake das ipk-native Paket und lege dir dessen Binaries in den Pfad.

2) Kopiere das ausgepackte ipkg und libipk0 auf die SD card.

3) Kopiere dir die wichtigsten IPKs auf die SD card. Wer sich auskennt lässt weg, wovon er oder sie weiss, dass es nicht benötigt wird. Ich habe keine Ahnung und deshalb hab ich einfach alles draufkopiert.

5) Pack die Karte in den GP2X, starte das USB Serial Gadget Modul und die umgeleitete Bash. Dann verbinde dich vom PC aus mit Minicom oder benutze sterm wenn du ganz hartgesotten bist.

Eventuell musst du dein Root Ordner schreibbar machen:
6) mount / -o remount,rw,noatime

Dann kopiere die Helferbibliothek für ipkg auf den GP2X:
7) cp libipkg0_0.99.154-r2_arm/usr/lib/libipkg.so.0 /usr/lib

Und dann IPK selber:
8) cp ipkg_0.99.154-r2_arm/usr/bin/* /usr/bin

Jetzt kommt was Gefährliches. :) Wir installieren eine glibc!
Da es dieselbe Version ist, wie die vorherige ist das aber kein Problem. Ausserdem gibt es durch diese Aktion ldconfig, was wichtig für alle folgenden Bibliotheksinstallationen ist.
9) ipkg-cl install libc6_2.2.5-r5_arm.ipk

Jetzt installieren wir nochmal vernünftig ipkg und libipkg.
10) ipkg-cl install libipkg0_0.99.154-r2_arm.ipk
11) ipkg-cl install ipkg_0.99.154-r2_arm.ipk

Jaja. Da hagelt es ein paar Fehlermeldungen, aber es klappt trotzdem. Irgendwie bräuchte es ein richtiges 'sed' und nicht den aus Busybox. Ich habe den GNU Sed auch übersetzt und installiert, aber die Fehler gehen nicht weg. Mal gucken ...

So. An dieser Stelle ist der GP2X für jeden Mist zu haben.
Ich habe dann zlib (1.2.nochwas), classpath-commons, classpath und jamvm installiert.

Weil Classpath 0.19 nicht in OE enthalten ist und es ausserdem in der gegebenen Konfiguration GTK und sowas benötigen würde, habe ich einfach ein abgespecktes Classpath 0.19 via bitbake Datei in die OE Umgebung eingepflegt.

Pack die Datei classpath_0.19.bb in ${OE_HOME}/org.openembedded.dev/packages/classpath:
Code:
<i>
</i>DESCRIPTION = "GNU Classpath standard Java libraries"
HOMEPAGE = "http://www.gnu.org/software/classpath/"
LICENSE = "Classpath"
PRIORITY = "optional"
MAINTAINER = "Rene Wagner <rw@handhelds.org>"
SECTION = "libs"
PR = "r1"

DEPENDS = "jikes-native zip-native"
RDEPENDS_${PN} = "${PN}-common (${PV})"

SRC_URI = "${GNU_MIRROR}/${PN}/${P}.tar.gz \
           file://disable-automake-checks.patch;patch=1"

inherit autotools

EXTRA_OECONF = "--with-jikes --disable-alsa \
    --disable-dssi --disable-gtk-peer \
    --disable-examples"

PACKAGES += " ${PN}-common ${PN}-examples"

FILES_${PN} = "${libdir}/${PN}"
FILES_${PN}-common = "${datadir}/${PN}/glibj.zip"

do_stage() {
	install -d ${STAGING_INCDIR}/classpath
	install -m 0755 include/jni* ${STAGING_INCDIR}/classpath/
}

do_install() {
	autotools_do_install
	mv ${D}${libdir}/security ${D}${libdir}/${PN}
}

Und da Classpath 0.19 nur mit JamVM 1.4.1 richtig Spass macht, habe ich das eben auch hinzugefügt.

Packe jamvm_1.4.1.bb in ${OE_HOME}/org.openembedded.dev/packages/jamvm:
Code:
<i>
</i>DESCRIPTION = "A compact Java Virtual Machine which conforms to the JVM specification version 2."
HOMEPAGE = "http://jamvm.sourceforge.net/"
LICENSE = "GPL"
PRIORITY = "optional"
MAINTAINER = "Rene Wagner <rw@handhelds.org>"
SECTION = "interpreters"

DEPENDS = "zlib classpath"
RDEPENDS = "classpath (>= 0.19) classpath-common (>= 0.19)"

SRC_URI = "${SOURCEFORGE_MIRROR}/${PN}/${P}.tar.gz"

# This uses 32 bit arm, so force the instruction set to arm, not thumb
ARM_INSTRUCTION_SET = "arm"

inherit autotools update-alternatives

EXTRA_OECONF = "--with-classpath-install-dir=${prefix}"
CFLAGS += "-DDEFAULT_MAX_HEAP=16*MB"

PROVIDES = "virtual/java"
ALTERNATIVE_NAME = "java"
ALTERNATIVE_PATH = "${bindir}/jamvm"
ALTERNATIVE_PRIORITY = "10"

So. Dann habe ich mir nen kleines Java App geschrieben,
Code:
<i>
</i>public class Test {
	public static void main(String[] args) {
		System.out.println("Hello World");
		System.out.println("This is " + System.getProperty("java.vm.name"));
		System.out.println("running on " + System.getProperty("os.name"));
		System.out.println("with GNU Classpath " + System.getProperty("gnu.classpath.version"));
	}
}
via gcj (was sonst :) ) kompiliert: gcj -C Test.java und auf die SD card gepackt und dann via minicom auf dem GP2X ausgeführt...

Ich denke das spricht für sich selbst:
Code:
<i>
</i>bash-2.05a# jamvm Test
Hello World
This is JamVM
running on Linux
with GNU Classpath 0.19

So und morgen bauen wir sdljava .... :)

----

Also ich bin von OpenEmbedded sowas von begeistert. Wenn jetzt noch jemand den GPH Kernel und die Headers einpflegt, könnte man schon von einer richtigen Distribution für den GP2X sprechen ... :) :)
 
He,

nicht schlecht, jetzt wird es aber Zeit das du dir einen Schreibzugriff auf das oe-monotone-repository holst und dem projekt was zurueck gibts. Ich werd dann auch mit helfen die Sachen zu maintainen.

Gruss Henning
 
woglinde said:
He,

nicht schlecht, jetzt wird es aber Zeit das du dir einen Schreibzugriff auf das oe-monotone-repository holst und dem projekt was zurueck gibts. Ich werd dann auch mit helfen die Sachen zu maintainen.

Gruss Henning
Jaja - geht klar. Aber vorher lass mich noch ausschlafen. :)

Das Problem mit GNU Sed ist übrigens ganz einfach gelöst: Lösche den /bin/sed Link von Busybox und lege selber einen von /bin/sed.sed nach /bin/sed an. Schwups sind bei der nächsten Installation alle Probleme beseitigt.
 
Sehr schön, damit haben wir jetzt schon C, C++, Python, Perl und Java. Fehlt eigentlich nur noch Ruby ;)

Läuft das ganze von der SD Karte oder muss es in den NAND kopiert werden? Habe Perl inzwischen soweit, dass es komplett von /mnt/sd/libs/perl laufen kann - Wenn man bedenkt, dass wir hier von ~ 11MB freien Speicherplatz auf dem NAND sprechen wird das früher oder später knapp.
 
Da ich als "Datenbankmensch" bisher nicht viel mit Embedded Systeme zu tun hatte, weiss ich nicht ob euch folgendes "Tool" helfen kann: http://www.pengutronix.de/software/ptxdist_de.html
 
Miyu said:
Sehr schön, damit haben wir jetzt schon C, C++, Python, Perl und Java. Fehlt eigentlich nur noch Ruby ;)

Läuft das ganze von der SD Karte oder muss es in den NAND kopiert werden? Habe Perl inzwischen soweit, dass es komplett von /mnt/sd/libs/perl laufen kann - Wenn man bedenkt, dass wir hier von ~ 11MB freien Speicherplatz auf dem NAND sprechen wird das früher oder später knapp.
Ja, leider installiere ich momentan alles ins Root-NAND (da wo 24 MB frei sind). Ich habe mir überlegt, ob es nicht möglich wäre einige *wichtige* Bibliotheken (glibc, zlib, libipk, sdl) ins NAND (zB /lib) zu installieren, während die anderen nach /usr/lib installiert werden sollen, was ich dann auf die SD Karte biegen würde.

Kann busybox' mount eigentlich rebind? Also das einhängen eines existierenden Verzeichnisses in ein anderes? Ich könnte /usr/lib zu einem Symlink machen, aber da Bibliotheken von systemnahen Werkzeugen wie ldconfig verarbeitet werden, möchte ich auf Symlinks verzichten.

Momentan habe ich noch keine Zeit die Anleitung ins Englische zu übersetzen und ins GP2X Wiki zu stellen, aber sobald ich Zeit habe, werde ich das tun.

In der Zwischenzeit kann ja jeder schon mal mit OE rumspielen und die Erfahrungen hier posten.
 
Ja, das busyboy mount kann bind, habe ich schon erfolgreich auf dem gp2x benutzt :)

Das openembedded Ding ist mir leider bei libtool in der toolchain gestorben. Allerdings habe ich inzwischen rausgefunden, dass Gentoo auch eine sehr schöne Crosscompileumgebung mitbringt. Tricky wird allerdings, das ganze mit so alten Libs zur Zusammenarbeit zu bewegen, da man z.B. Perl nicht statisch linken kann :(

Ansonsten könnte man ja auch einfach die ARM-Binaries von Debian nehmen und sich damit ein eigenes System aufbauen. Ich habe mir einmal eine kleine Debian-Arm Distro auf eine SD Karte gelegt und beim Booten die SD Karte einfach über den Root gemountet. Et Voila, ein frisches System mit massig Speicherplatz ohne dass man sich über die Haltbarkeit des NANDs Gedanken machen müsste.
 
Miyu said:
Das openembedded Ding ist mir leider bei libtool in der toolchain gestorben.
Welcher Fehler? Hast du meine local.conf und gp2xoe.conf benutzt?
Miyu said:
Allerdings habe ich inzwischen rausgefunden, dass Gentoo auch eine sehr schöne Crosscompileumgebung mitbringt. Tricky wird allerdings, das ganze mit so alten Libs zur Zusammenarbeit zu bewegen, da man z.B. Perl nicht statisch linken kann :(
Genau das ist ja der Punkt. Crosscompile Umgebung anlegen kann ja fast schon jeder. :) Aber das mit den Libraries ist ein Kunststück und das macht IMHO auch keinen Sinn das mehrmals zu erfinden.

Ich benutze hier auch Gentoo. Also falls du dein OE Problem lösen willst, dann kann ich dir sicher helfen.

Btw: Benutze nicht das in Gentoo enthaltene Bitbake, sondern lieber das aus dem SVN Repository.
Miyu said:
Ansonsten könnte man ja auch einfach die ARM-Binaries von Debian nehmen und sich damit ein eigenes System aufbauen. Ich habe mir einmal eine kleine Debian-Arm Distro auf eine SD Karte gelegt und beim Booten die SD Karte einfach über den Root gemountet. Et Voila, ein frisches System mit massig Speicherplatz ohne dass man sich über die Haltbarkeit des NANDs Gedanken machen müsste.
Das ist allerdings wirklich huebsch. :)

Und falls jemand noch einen Beweis möchte, dass ich wirklich den Kram gebaut habe, von dem ich oben geschrieben habe:
http://page.mi.fu-berlin.de/~rschuste/jamvm-gp2x.jpeg
http://page.mi.fu-berlin.de/~rschuste/jamvm-gp2x-closeup.jpeg

:)

/me geht jetzt die Anleitung schreiben.
 
theBohemian said:
Und falls jemand noch einen Beweis möchte, dass ich wirklich den Kram gebaut habe, von dem ich oben geschrieben habe:
http://page.mi.fu-berlin.de/~rschuste/jamvm-gp2x.jpeg
http://page.mi.fu-berlin.de/~rschuste/jamvm-gp2x-closeup.jpeg

:)

/me geht jetzt die Anleitung schreiben.

*lol* Die Welt ist klein. Waere schoen wenn wir uns mal an der UNI treffen und das gp2x mit bringen koenntest.

Gruss Henning
 
woglinde said:
*lol* Die Welt ist klein. Waere schoen wenn wir uns mal an der UNI treffen und das gp2x mit bringen koenntest.
Eventuell gibt es diesen Monat noch mal ein 'Spieleentwickler' treffen. Dafür würde ich dann einen kurzen Vortrag übers GP2X halten. :)
theBohemian said:
/me geht jetzt die Anleitung schreiben.
Die ist jetzt soweit fertig: http://wiki.gp2x.org/wiki/OpenEmbedded_GP2X_development_environment
 
Vorsicht, das ganze ist scheinbar noch nicht völlig ausgereift. Ich habe mir ein komplettes System damit erstellt und bin dann mit chroot reingewechselt. Perl wirft sobald Module eingebunden werden Fehler und bei bestimmten Modulen sogar ein Segmentation Fault. Ebenso einige andere Programme :(
 
Gibt es eigentlich einen Grund, warum du tune-arm9tdmi genommen hast statt tune-arm920t? (der gp2x hat einen 920t) Werde mal eine neue Toolchain anlegen und schauen ob es einen Unterschied macht
 
In der gp2xoe.conf aus meinem Posting habe ich GCC 3.3.4 verwendet. Mittlerweile habe ich auf GCC 3.4.4 gewechselt.

Das funktioniert genauso und benötigt keinen Patch mehr.

Eventuell hast du damit auch weniger Probleme mit Perl.

EDIT: Ich glaube ich war einfach etwas übermüdet, als ich das mit der Architektur eingestellt habe. tune-arm920 ist natürlich passender.
 
Werde ich mal versuchen, die Toolchain ist ja fix gebaut. Allerdings stecke ich meine Hoffnungen gerade nicht sehr hoch :(
 
Hast du eigentlich das mit dem Reinfrickeln von ipkg hinbekommen?

Ich habe mittlerweile /usr/lib und /usr/share auf die SD Karte migriert. Jetzt kann ich schon sehr viel mehr Software installieren. :)

Ich müsste jetzt noch die gp2xoe.conf so anpassen, dass user libraries nach /usr/local/bin installiert werden. Das liegt von Hause aus im Pfad des GPH Linux, aber das Verzeichnis existiert nicht und kann bequem für nicht so kritische Binaries benutzt werden.
 
Neues gcc hat es sogar noch schlimmer gemacht, die neue libc funktioniert nicht, programme hängen sich auf. Und mein gp2x ist deswegen jetzt erstmal gebrickt :(
 
Back
Top