Compilerzeiten bei GCC für den GBA
-
Hi!
Auf dem GameBoyAdvanced gibt es ja leider keine Dateien, somit muss man
alle seine Mediendateien in ein Array auslagern. Diese sind dann immer
extern in einer Header datei für sich. Das sieht dann inetwa so aus:const u8[42623] = { 2,54,3,63,128,72,... };
(u8 ist übrigens unsigned Byte)
Und dann binde ich diese Headerdatei so ein :
#include "Bild.h"
Was einen aber zur Weißglut bringt ist, die laaaaaaaangen Compilerzeiten.
Mein Rechner schmiert nach einer Zeit dann einfach ab, weil es zu lange
dauert, 4 MB zu kompilieren. Ich vermute mal, dass er jedes Byte durchgeht,
und überprüft, ob es nicht die Wertegrenze von s8 überschreitet. Das muss
aber nicht sein, weil ich immer 100pro sichergehen kann, das die Werte
nie den Wertebereich überschreiten. Anders kann ich mir diese langen Zeiten
nicht erklären. Ich lese den Inhalt so einer 4 MB Headerdatei in höchstens
einer halben Minute aus. Kann man das irgendwie abschalten, das er die Header-
dateien auf Fehler untersucht?
Hilfe!
mfg olli
-
Wie man das abschalten kann, weis ich nicht, aber ich hab ne Idee, wie es nur einmal so lange dauert.
Die Bild.h nennst du Bild.c und kompilierst sie einmal für den Linker (Gib der Konstante einen Namen, z.B. bild).
Im Programmsource schreibst du dann "extern bild;" und linkst das Prog mit der bild.o.
Sollte funzen .. glaub ich
-
Danke ertstmal! Blos habe ich das ganze noch nicht kapiert, wie ich das
umsetzen sollte.Path = ..\..\SDK\devkitadv\bin
gcc -o Explosion.o Explosion.cSo lautet jetzt die make.bat
dann kommt aber immer:C:\GBA\Projects\Sound>gcc -o Programm Explosion.c
/cygdrive/c/GBA/SDK/DEVKIT~1/BIN/../lib/gcc-lib/arm-agb-elf/3.0.2/../../../../ar
m-agb-elf/lib/crt0.o: In function__FarProcedure': /cygdrive/c/GBA/SDK/DEVKIT~1/BIN/../lib/gcc-lib/arm-agb-elf/3.0.2/../../../../ar m-agb-elf/lib/crt0.o(.text+0x1f0): undefined reference to
main'
collect2: ld returned 1 exit statusIch denke mal, er will unbedingt eine Mainfunktion.
Und wenn das dann mal irgendwie klappen sollte, müsste ich dann
beim Hauptprogramm das so machen?:Path = ..\..\SDK\devkitadv\bin
gcc -o Main.o Main.cpp -lm
objcopy -O binary Explosion.o Main.o Main.gbadas mit der Konstante erreich ich doch so ?oder:
const signed char Explosion[42512] = { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,34,34 ... };
also via const.
thx!
mfg olli
-
Ich denke mal, er will unbedingt eine Mainfunktion.
Du musst die Explosion.c nur kompilieren: gcc -c Explosion.c
Nur wenn es sich um was ausführbares handelt, braucht man ne main(); Die Aktion soll ja nur ein Objekt-File geben.Und wenn das dann mal irgendwie klappen sollte, müsste ich dann
beim Hauptprogramm das so machen?:Das kann ich dir nicht sagen: ich kenn mich mit der Programmierung für Konsolen nicht aus. Sieht aber richtig aus.
das mit der Konstante erreich ich doch so ?oder:
Du hast doch gesagt u8 wäre unsigned char - warum auf einmal signed?