Hilfe bei SDL für Pandora


SebbiUltimate

Member
Joined
Jun 17, 2010
Messages
372
Hallo Leute,
ich muss euch wieder mit einem Problem konfrontieren. :unsure:
Ich habe mir diesen Testsourcecode und das dort befindliche devkitpro heruntergeladen.
Ich benutze davon aber nur die Compiler im Ordner .../devkitARM/arm-eabi/bin. Betriebsyystem ist Win XP und das vorher genannte Verzeichnis ist in der %PATH% drin.
Ich hatte schon vorher Probleme beim kompilieren, die aber nur an fehlenden Headern usw. lagen. Doch nun gehts an den eingemachten Assembler-Krust.
Ich bekomme folgende Ausgabe, nachdem ich "arm-eabi-gcc -o sebbi.bin main.cpp -fno-short-enums" ausführe:
Code:
f:/programme/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.5.1/../../../../arm-e
abi/bin/ld.exe: warning: C:\DOKUME~1\SEBAST~1\LOKALE~1\Temp\ccMywgv5.o uses 32-b
it enums yet the output is to use variable-size enums; use of enum values across
 objects may fail
C:\DOKUME~1\SEBAST~1\LOKALE~1\Temp\ccMywgv5.o: In function `main':
main.cpp:(.text+0x40): undefined reference to `Game::Game()'
main.cpp:(.text+0x4c): undefined reference to `Game::start()'
main.cpp:(.text+0x5c): undefined reference to `Game::~Game()'
main.cpp:(.text+0x7c): undefined reference to `Game::~Game()'
main.cpp:(.text+0x80): undefined reference to `__cxa_end_cleanup'
C:\DOKUME~1\SEBAST~1\LOKALE~1\Temp\ccMywgv5.o: In function `__static_initializat
ion_and_destruction_0(int, int)':
main.cpp:(.text+0xbc): undefined reference to `std::ios_base::Init::Init()'
main.cpp:(.text+0xe4): undefined reference to `std::ios_base::Init::~Init()'
C:\DOKUME~1\SEBAST~1\LOKALE~1\Temp\ccMywgv5.o:(.ARM.extab+0x0): undefined refere
nce to `__gxx_personality_v0'
C:\DOKUME~1\SEBAST~1\LOKALE~1\Temp\ccMywgv5.o:(.eh_frame+0x43): undefined refere
nce to `__gxx_personality_v0'
collect2: ld returned 1 exit status
Drücken Sie eine beliebige Taste . . .
PS: Und ja, ich weiß, dass jede Zeile oben mit ICH anfängt. :-D
 
Aus meinem beschränkten Wissen, was das compilieren über die Konsole angeht: Du erstellst eine Objectdatei aus main.cpp, in der die Klasse "Game" gebraucht wird. Du hast aber game.cpp (u. engine.cpp) garnicht compiliert bzw. zum dazulinken angegeben. Das ist es, was er mit "undefined reference" meint (SDL muss auch noch dazu gelinkt werden). Am besten nimmst du eine IDE (ich benutz Code::Blocks), die erledigt diesen ganzen Kleinkram für dich.
 
Oh, ok- ich dachte die Header sagen das dem Linker automatisch... Danke- Wenn ich mal ganz blöd fragen darf: Was muss ich da nach dem Import der Dateien und Compiler/Linker-Pfade noch einstellen- bei mir kommt "uses an invalid compiler- skipping... Nothing to be done."

Aber mal kurz OT (sorry aber das gehört zum Problem):
Da ich meine Pandora noch nicht habe ( :-( ), möchte ich es über qemu testen (sd image).
Screeny hat ja mal ein qemu image hochgeladen. Damit möchte ich gerne die SDL Demo testen; aber es sieht so aus, als ob diese damalige Version noch nicht das .pnd Format unterstützt, dh ich habe ewig lang nach einer Lösung gesucht und hab mit ImgBurn ein Image im UDF Format gemacht, weil ich kein passendes Tool für Fat gefunden habe. Jedenfalls hab ich dann versucht, mit "qemu-img convert -f raw pandora.img -O vvfat pan.img" das Format in vfat umzuwandeln, weil es sonst einen Kernel Panic gibt. Doch das bringt auch nichts (ich vermute qemu-img hat das gar nicht gemacht, da die Output Datei -O hieß) . Hat das jemand mal gemacht oder weiß, wie das geht?
 
Hey vllt hilft es ja. Ich hab vor einiger Zeit nen Thread zum kompilieren für die Pandora eröffnet. Ist ein paar Threads unter diesem ;)
http://forum.gp2x.de/viewtopic.php?f=8&t=10348

Und zum Thema testen. Du kannst auch uns Pandora-Besitzer fragen. Vllt findet sich ja ein Tester ;)
 
JohnDavidson said:
Hey vllt hilft es ja. Ich hab vor einiger Zeit nen Thread zum kompilieren für die Pandora eröffnet. Ist ein paar Threads unter diesem ;)
http://forum.gp2x.de/viewtopic.php?f=8&t=10348

Und zum Thema testen. Du kannst auch uns Pandora-Besitzer fragen. Vllt findet sich ja ein Tester ;)
1. Ist zwar nett gemeint und eine tolle Mühe die du dir da gemacht hast, aber ich habe Windows XP auf dem Rechner. Leider kann ich das dann so nicht nutzen.
2. Sorry aber dann müsste ich ja bei _jedem_ neuen Schritt fragen obs funktioniert- eigtl müsste qemu ja funktionieren : Die Frage ist nur, wie man so ein hdd img hinkriegt wie Screeny das gemacht hat.
EDIT: zu 2.: Oder jemand weiß, wo man das aktuelle Pandora HDD img für qemu (boot über hdd-vfat, also nicht das sd-image von pandora-power.net) herkriegt/macht und kann mir einen Link geben?
 
Ich hab jetzt (umgeändert)
Code:
arm-eabi-g++ -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp -o sdlgameengine Window.cpp Image.cpp AnimatedImage.cpp Engine.cpp Controls.cpp main.cpp -Iinclude\SDL -Llib -Wl,--allow-shlib-undefined -lSDL -lSDL_image -lstdc++
eingegeben, stimmt das? Ich bekomme immer sdl.h nicht gefunden.. ich hab in der Path "F:\Programme\devkitPro\devkitARM\arm-eabi\" definiert, was muss ich noch machen bzw. stimmen die -I und -L Parameter?
EDIT: Hab das problem provesorisch umgangen indem ich die Ordner ins Verzeichnis kopiert habe (suche aber immer noch nach einer Lösung), dann hab ich noch -fno-short-enums gemacht, aber dann findet er -lSDL nicht. X-( Es ist zum verzweifeln.
Code:
f:/programme/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.5.1/../../../../arm-e
abi/bin/ld.exe: cannot find -lSDL
collect2: ld returned 1 exit status
Drücken Sie eine beliebige Taste . . .
 
..Oh doch viel schwerer als ich dachte- werde es dann doch auf einem Linux PC machen (Hab grade ne Linux Anleitung gefunden siehe hier)
 
Back
Top