Hallo,
nun hat es mich doch in dieses Forum verschlagen, da ich mit meinen Problemchen evtl. hier am besten aufgehoben bin.
Ich versuche seit geraumer Zeit aMule der Version 2.0.3 und 2.1.0 statisch zu bauen. Als Platform dient eine Dreambox mit Linux (Kernel-2.6.9) und einem powerpc prozessor, dem ppc405 um genau zu sein. Die Box verfuegt ueber eine minimale Anzahl von Bibilotheken, deshalb musste ich den ganzen X-lib stuff sowie gtk und wxGTK erst statisch bauen, um amule zu erstellen. Das Bauen beider Versionen (amule-2.0.3 & amule-2.1.0) funktioniert im Anschluss als dynamisch gelinkte Version ohne Probleme. Das soll heissen nur die libs der glibc, sowie libz und libpng sind dynamisch gelinkt, der Rest statisch, da aus Platzgruenden keine weiteren shared libs auf der Box integriert werden koennen.
Zu den Bibilotheken, auf die amule aufbaut:
statisch:
- glib-1.2.10
- libX11-6.2.1
- gtk+-1.2.10
- wxGTK-2.6.1 (auch wxGTK-2.6.2 probiert)
- libpng
- libfreetype
- libjpeg
dynamisch: (glibc-2.3.2)
- libc.so.6
- libm.so.6
- libpthread.so.0
- libdl.so.2
- ld.so.1
- libz.so.1
- libstdc++.so.6
- libgcc_s_nof.so.1
- libgcc_s.so.1
Ich habe die alten GTK-1.x libs genommen, da diese stabiler laufen sollten. Abgesehen davon verfuegt die Box ueber wenig Arbeitsspeicher.
amule baue ich wie folgt ( Auszug aus Makefile ):
cd aMule-2.1.0 && \
./configure \
--prefix=/hdd/aMule \
--disable-monolithic \
--enable-amule-daemon \
--enable-webserver \
--disable-debug \
--enable-optimize \
--enable-optimise \
--disable-rpath \
--with-gnu-ld \
--disable-gtktest \
--disable-gsocket \
--x-libraries=$(PREFIX)/lib \
--x-includes=$(PREFIX)/include \
--with-gdlib-config=$(PREFIX)/bin/gdlib-config \
--with-wx-config=$(PREFIX)/bin/wx-config \
--with-gtk-config=$(PREFIX)/bin/gtk-config && \
$(MAKE) CC="distcc $(BUILD)-gcc" CXX="distcc $(BUILD)-g++" && \
$(MAKE) && \
$(MAKE) install
$(PREFIX) ist hier der Pfad, wo sich die genannten libs befinden.
distcc wird hier für schnelleres Compilieren verwendet, was aber nichts am Problem ändert, denn auch mit ausschliesslicher Verwendung des localen Compilers (gcc) kommt es zum gleichen Ergebnis.
Versuche ich nun amule statisch zu bauen (also mit Angabe von "--enable-static") funktioniert das auch fehlerfrei, jedoch beim Starten von amuleweb und amuled brechen diese mit der Meldung "Illegal Instruction" ab. ed2k hingegen bereitet keine Probleme. Zumindest was ein "ed2k --help" angeht.
Ich habe versucht das gnaze mal mit dem Debugger gdb zu starten, aber merh als ein:
Program received signal SIGILL, Illegal instruction.
0x10000000 in ?? ()
war da nicht zu entlocken.
Vielleicht kann mir ja jemand von Euch einen Tips geben. Ich werde doch nicht der einzige sein, der amule bisher statisch auf einem Linux ppc gebaut hat.
Danke
cheers
PS: Wenn noch noetige Angaben ueber das System fehlen sollten, bitte bescheid sagen.