Kompilierungsproblem von BoboBot
Ich vresuche unter 8.1 BoboBot (http://freshmeat.net/projects/bobobot/) zu installieren. # ls . CHANGES README bobobot-icon.xpm levels obj .. COPYING TODO docs makefile sounds Agenda-FAQ INSTALL bobobot images mods src # make JOY=YES SOUND=YES MUSIC=YES INSTALLROOT=/usr/local/bin DATA=/usr/local/bin/bobobot make: sdl-config: Command not found š@š@/opt/snow-gcc/bin/mipsel-linux-gcc src/bobobot.c -c -B/opt/snow-gcc/lib/snow/ -I/opt/snow-gcc/lib/snow/include -DDATA=\"/usr/local/bin/bobobot\" -DJOYSTICK_YES -DSOUND_YES -DMUSIC_YES -O2 -Wall -funroll-loops -ffast-math -o obj/bobobot.o make: /opt/snow-gcc/bin/mipsel-linux-gcc: Command not found make: *** [obj/bobobot.o] Error 127 SDL ist installiert, make und gcc auch. Albert
Al Bogner wrote:
Ich vresuche unter 8.1 BoboBot (http://freshmeat.net/projects/bobobot/) zu installieren.
# ls . CHANGES README bobobot-icon.xpm levels obj .. COPYING TODO docs makefile sounds Agenda-FAQ INSTALL bobobot images mods src
# make JOY=YES SOUND=YES MUSIC=YES INSTALLROOT=/usr/local/bin DATA=/usr/local/bin/bobobot
make: sdl-config: Command not found š@š@/opt/snow-gcc/bin/mipsel-linux-gcc src/bobobot.c -c -B/opt/snow-gcc/lib/snow/ -I/opt/snow-gcc/lib/snow/include -DDATA=\"/usr/local/bin/bobobot\" -DJOYSTICK_YES -DSOUND_YES -DMUSIC_YES -O2 -Wall -funroll-loops -ffast-math -o obj/bobobot.o make: /opt/snow-gcc/bin/mipsel-linux-gcc: Command not found make: *** [obj/bobobot.o] Error 127
SDL ist installiert, make und gcc auch.
Nein! Warum wird immer wieder der gleiche Fehler gemacht? Da steht "sdl-config: Command not found" und dieses Programm befindet sich nicht im RPM Paket SDL sondern in SDL-devel! Wenn man eigene Soft- ware compilieren moechte, dann braucht man zu saemtlichen benoe- tigten Programmen aus RPMs auch die zugehoerigen *-devel RPMs. Das ging nun aber schon x-Mal (mit x > 50) durch die Liste. Desweiteren stellt sich die Frage, was "/opt/snow-gcc/bin/mipsel-linux-gcc" eigentlich ist? Nie gehoert, das gehoert sicherlich nicht zu einem Standard-gcc, oder? Wenn kein ./configure-Skript vorhanden ist, dann musst Du vermutlich das makefile anpassen auf Deine Beduerf- nisse. Hast Du das gemacht? Gruesse, Thomson -- Thomas Hertweck, Dipl.-Geophys. Geophysikalisches Institut, Universitaet Karlsruhe (TH)
On Freitag, 1. November 2002 10:39 Thomas Hertweck wrote:
Desweiteren stellt sich die Frage, was "/opt/snow-gcc/bin/mipsel-linux-gcc" eigentlich ist?
Über make: /opt/snow-gcc/bin/mipsel-linux-gcc: Command not found habe ich mich auch gewundert.
Wenn kein ./configure-Skript vorhanden ist, dann musst Du vermutlich das makefile anpassen auf Deine Beduerf- nisse. Hast Du das gemacht?
Nein, dazu reicht mein Wissen wohl nicht. Ich bin nach INSTALL vorgegangen. Mittlerweile habe ich folgende Meldung: # make JOY=YES SOUND=YES MUSIC=YES INSTALLROOT=/usr/local/bin DATA=/usr/local/bin/bobobot /opt/snow-gcc/bin/mipsel-linux-gcc src/bobobot.c -c -B/opt/snow-gcc/lib/snow/ -I/opt/snow-gcc/lib/snow/include -DDATA=\"/usr/local/bin/bobobot\" -DJOYSTICK_YES -DSOUND_YES -DMUSIC_YES -O2 -Wall -funroll-loops -ffast-math -I/usr/include/SDL -D_REENTRANT -o obj/bobobot.o make: /opt/snow-gcc/bin/mipsel-linux-gcc: Command not found make: *** [obj/bobobot.o] Error 127 Albert
Al Bogner wrote:
On Freitag, 1. November 2002 10:39 Thomas Hertweck wrote:
Desweiteren stellt sich die Frage, was "/opt/snow-gcc/bin/mipsel-linux-gcc" eigentlich ist?
Über make: /opt/snow-gcc/bin/mipsel-linux-gcc: Command not found habe ich mich auch gewundert.
Wenn kein ./configure-Skript vorhanden ist, dann musst Du vermutlich das makefile anpassen auf Deine Beduerf- nisse. Hast Du das gemacht?
Nein, dazu reicht mein Wissen wohl nicht. Ich bin nach INSTALL vorgegangen.
Ich kenne das Programm nicht und weiss nicht, was in INSTALL drinsteht, aber a) anscheinend hast Du vergessen, da noch etwas anzupassen ueber ein paar Variablen oder b) Du kommst um das Editieren des Makefiles nicht herum.
Mittlerweile habe ich folgende Meldung:
# make JOY=YES SOUND=YES MUSIC=YES INSTALLROOT=/usr/local/bin DATA=/usr/local/bin/bobobot
/opt/snow-gcc/bin/mipsel-linux-gcc src/bobobot.c -c -B/opt/snow-gcc/lib/snow/ -I/opt/snow-gcc/lib/snow/include -DDATA=\"/usr/local/bin/bobobot\" -DJOYSTICK_YES -DSOUND_YES -DMUSIC_YES -O2 -Wall -funroll-loops -ffast-math -I/usr/include/SDL -D_REENTRANT -o obj/bobobot.o make: /opt/snow-gcc/bin/mipsel-linux-gcc: Command not found make: *** [obj/bobobot.o] Error 127
Versuche mal spasseshalber ein "make CC=gcc ....", wobei die Punkte durch das restliche "Zeugs" zu ersetzen sind. Du kannst auch einfach mal ins Makefile schauen, so schwer ist das eigent- lich nicht. Notfalls schicke mir das Makefile mal als private Email. Gruesse, Thomson -- Thomas Hertweck, Dipl.-Geophys. Geophysikalisches Institut, Universitaet Karlsruhe (TH)
On Freitag, 1. November 2002 11:14 Thomas Hertweck wrote:
Versuche mal spasseshalber ein "make CC=gcc ...."
Ich habe mal das makefile so verändert: #CC=/opt/snow-gcc/bin/mipsel-linux-gcc CC=/usr/bin/gcc # make JOY=YES SOUND=YES MUSIC=YES INSTALLROOT=/usr/local/bin DATA=/usr/local/bin/bobobot /usr/bin/gcc src/bobobot.c -c -B/opt/snow-gcc/lib/snow/ -I/opt/snow-gcc/lib/snow/include -DDATA=\"/usr/local/bin/bobobot\" -DJOYSTICK_YES -DSOUND_YES -DMUSIC_YES -O2 -Wall -funroll-loops -ffast-math -I/usr/include/SDL -D_REENTRANT -o obj/bobobot.o src/bobobot.c:110:1: warning: "KEY_LEFT" redefined In file included from /usr/include/linux/joystick.h:33, from src/bobobot.c:75: /usr/include/linux/input.h:204:1: warning: this is the location of the previous definition src/bobobot.c:111:1: warning: "KEY_RIGHT" redefined /usr/include/linux/input.h:205:1: warning: this is the location of the previous definition src/bobobot.c:112:1: warning: "KEY_UP" redefined /usr/include/linux/input.h:202:1: warning: this is the location of the previous definition src/bobobot.c:113:1: warning: "KEY_DOWN" redefined /usr/include/linux/input.h:207:1: warning: this is the location of the previous definition src/bobobot.c: In function `title': src/bobobot.c:7792: warning: unused variable `tip' src/bobobot.c:7795: warning: unused variable `i' src/bobobot.c:7795: warning: unused variable `x' src/bobobot.c:7795: warning: unused variable `y' src/bobobot.c:7795: warning: unused variable `num_threeds' src/bobobot.c:7795: warning: unused variable `threed_which' src/bobobot.c:7796: warning: unused variable `spin_mode' src/bobobot.c:7797: warning: unused variable `zz' src/bobobot.c:7798: warning: unused variable `point' src/bobobot.c:7799: warning: unused variable `star' src/bobobot.c:7800: warning: unused variable `threed' /usr/bin/gcc obj/bobobot.o obj/window.o obj/connect.o obj/hints.o obj/visual.o obj/gc.o obj/color.o obj/randnum.o obj/text.o -L/opt/snow-gcc/lib/snow/lib -lX11 -lm \ -B/opt/snow-gcc/lib/snow/ -I/opt/snow-gcc/lib/snow/include -DDATA=\"/usr/local/bin/bobobot\" -DJOYSTICK_YES -DSOUND_YES -DMUSIC_YES -O2 -Wall -funroll-loops -ffast-math -I/usr/include/SDL -D_REENTRANT -o bobobot /usr/lib/gcc-lib/i486-suse-linux/3.2/../../../../i486-suse-linux/bin/ld: obj/window.o: Relocations in generic ELF (EM: 8) obj/window.o: could not read symbols: File in wrong format collect2: ld returned 1 exit status make: *** [bobobot] Error 1 Albert
Der Mensch, der das makefile geschrieben hat, gehört erschossen! Im Paket liegen Objekte und ein Executable die für Linux/MIPS kompiliert sind. Damit kann man auf ia32 natürlich nichts anfangen und du bekommst:
/usr/lib/gcc-lib/i486-suse-linux/3.2/../../../../i486-suse-linux/bin/ld: obj/window.o: Relocations in generic ELF (EM: 8) obj/window.o: could not read symbols: File in wrong format
Und ohne gravierende Änderungen funktioniert das Makefile auch dann nicht. Die Alternativen sind IMO: - die Änderungen machen - beim Autor beschweren - das Paket in die Tonne treten. Philipp -- Philipp Thomas Arbeit: pthomas@suse.de Entwicklung, SuSE Linux AG Privat: pth@t-link.de
Philipp Thomas wrote:
Der Mensch, der das makefile geschrieben hat, gehört erschossen! Im Paket liegen Objekte und ein Executable die für Linux/MIPS kompiliert sind.
Richtig... :-)
Damit kann man auf ia32 natürlich nichts anfangen und du bekommst:
/usr/lib/gcc-lib/i486-suse-linux/3.2/../../../../i486-suse-linux/bin/ld: obj/window.o: Relocations in generic ELF (EM: 8) obj/window.o: could not read symbols: File in wrong format
Genau. Das Makefile ist so verquer geschrieben, dass es zwar bobobot.c neu compiliert, aber dann versucht, das ganze mit den alten Object-Files des MIPS-Compilers zu linken, und das geht natuerlich schief!
Und ohne gravierende Änderungen funktioniert das Makefile auch dann nicht. Die Alternativen sind IMO:
- die Änderungen machen - beim Autor beschweren - das Paket in die Tonne treten.
So viel muss im Makefile nicht angepasst werden. Eigentlich nur der Compiler und das Verzeichnis fuer die X11-Header. Mit einem "make clean" lassen sich die alten Object-Files loeschen, und mit "make" kann man dann sogar eine ausfuehrbare Datei bobobot erstellen. Die laesst sich auch aufrufen und scheint zu funktio- nieren. Aber ein "make install" fehlt, und wie genau man die an- deren Sachen installieren muss (levels, sounds, etc.) weiss ich nicht. Ich hatte jedenfalls Al schon ein funktionierendes Make- file per PM geschickt. Wahrscheinlich kann man auch ganz auf das Aendern des Makefiles verzichten, wenn man entsprechende Variab- len setzt, z.B. CC=gcc usw. - ein "make clean" ist aber auf alle Faelle noetig! Aber Du hast natuerlich recht, so ein Paket im Internet zu ver- breiten ist schon recht grausig! Gruesse, Thomson -- Thomas Hertweck, Dipl.-Geophys. Geophysikalisches Institut, Universitaet Karlsruhe (TH)
On Freitag, 1. November 2002 14:30 Philipp Thomas wrote:
Und ohne gravierende Änderungen funktioniert das Makefile auch dann nicht. Die Alternativen sind IMO:
- die Änderungen machen - beim Autor beschweren
Habe ich bereits getan
- das Paket in die Tonne treten.
Wird wahrscheinlich bald passieren. Aber dazu gelernt habe ich wieder etwas. Danke an Thomas für das überarbeitete makefile. Albert
On Freitag, 1. November 2002 17:02 Al Bogner wrote:
- beim Autor beschweren
Habe ich bereits getan
Die Antwort kam schnell:
From: Bill Kendrick
Hi, Al Bogner:
(MIPS CPU).
Wozu dient denn dieser Compiler bzw. warum reicht kein Standard-gcc?
Weiß wer zufällig, wo es diesen Compiler gibt und ob die Installation das aktuelle Suse-8.1-System "durcheinander bringen" kann?
"MIPS" ist eine CPU, so wie es x86, PowerPC oder Alpha-Prozessoren gibt. Du kannst mit einem MIPS-compilierten Programm ungefähr soviel anfangen wie wenn ich dir Macintosh-Binaries schicke. Du willst das nicht. :-) Gruß, Ratti -- http://www.gesindel.de - Fontlinge - Die Fontverwaltung fuer Linux Fontmanagement for Linux
On Freitag, 1. November 2002 23:11 Joerg Rossdeutscher wrote:
"MIPS" ist eine CPU, so wie es x86, PowerPC oder Alpha-Prozessoren gibt. Du kannst mit einem MIPS-compilierten Programm ungefähr soviel anfangen wie wenn ich dir Macintosh-Binaries schicke.
Also mit Mac-Binaries dürfte ich keine besonderen Probleme haben. Hier steht noch immer ein Mac rum, den ich aber nur mehr selten nutze. BTW habe ich kürzlich gelesen, dass Apple Rechner mit x86-Prozessoren bauen will. (etwas wundernd) Jetzt wird mir auch schön langsam klar, warum da ein Crosscompiler notwendig ist. http://freshmeat.net/projects/bobobot meint schon, dass das Programm unter Linux laufen soll.
Du willst das nicht. :-)
Da hast Du recht. Das Programm ist mir ziemlich egal. Ich wollte es mir einfach mal ansehen und nun interessieren mich die Probleme rundherum. Albert
Al Bogner
Du willst das nicht. :-)
Da hast Du recht.
Gemeint war aber der Cross-Compiler, denn den brauchst du höchstwahrscheinlich wirklich nicht. Philipp -- Philipp Thomas Arbeit: pthomas@suse.de Entwicklung, SuSE Linux AG Privat: pth@t-link.de
Al Bogner
Die Antwort kam schnell:
From: Bill Kendrick
Hi - The solution is simple! Install the cross-compiler for the Agenda (MIPS CPU). Wozu dient denn dieser Compiler bzw. warum reicht kein Standard-gcc?
Der gute Mann hat einfach vergessen, ein entsprechendes README in das FTP-Verzeichnis zu tun. Daher nehme ich meine Behauptung von wegen Erschiessen (zumindest zum grössten Teil) zurück. Der Agenda ist ein Handheld Computer, der eine MIPS CPU (also was grundsätzlich Anderes als ein ix86) verwendet. Um auf dem PC Programme dafür zu erzeugen, braucht es einen sogenannten Cross-Compiler, also einen Compiler, der auf einem Prozessor läuft und Code für einen ganz anderen Prozessor erzeugen kann. Deswegen hat er in das Agenda-Paket auf die Objekte und das Binary gepackt. Das ist nicht ganz falsch, könnte aber besser gemacht werden.
Weiß wer zufällig, wo es diesen Compiler gibt
Du brauchst ihn einfach nicht! Zumindest wenn du keinen Agenda besitzt. Das für "normale" Plattformen zu verwendende Paket ist bobobot-preview3 und nicht Agendabobobot-preview3. Bei Ersterem passt sogar das Makefile und mann kann auch installieren. Trotzdem könnte das Makefile einiges Überarbeiten vertragen und die Verwendung von Automake und Autoconf wäre auch sehr empfehlenswert. Ich werde mal sehen, ob ich da nicht was basteln kann und damit mal wieder meine Kenntnisse der Autotools verbessere. Philipp -- Philipp Thomas Arbeit: pthomas@suse.de Entwicklung, SuSE Linux AG Privat: pth@t-link.de
participants (4)
-
Al Bogner
-
Joerg Rossdeutscher
-
Philipp Thomas
-
Thomas Hertweck