1

Salut a tous,

voila au début j'utilisais CigWin "GCC SDK ( arm-thumb-elf)" et gccgui et tout était ok, pas besoin de modifier la rom pour qu'elle fonctionne sur la gba.

mais j'ai voulu passer à GCC 3.xx et je suis tombé sur ce site : http://www.chez.com/edorul2/

ils me donnent un lien pour dl GCC 3.02

Donc pas de problème jusqu'a ce que je veuille executer un make
voici le make :
#-----------------------------------------------------------------------------------------
# Makefile pour compiler des projets GBA avec GCC
# (This Makefile has been made to be used with GCC for GBA)
#-----------------------------------------------------------------------------------------

#indiquez les fichiers que vous avez à compiler ci-dessous :
# (write files you want to compile below smile
.SFILES = crt0.s
.CFILES = main.c

#nom de la ROM finale :
# (name of the final ROM smile
TARGET_BIN = exemple.bin

#pour les utilisateurs de "Devkitadv" qui n'ont pas défini les variables d'environnement
# suivantes, enlevez les commentaires devant les lignes ci-dessous (les utilisateurs de
# GCCGBA n'ont rien à faire) :
# (for Devkitadv users who haven't the following Environnemental Variables set,
# uncomment the lines below (GCCGBA users have nothing to do) smile
#
#C_INCLUDE_PATH = /cygdrive/c/devkitadv/arm-agb-elf/include/
#GCC_EXEC_PREFIX = /cygdrive/c/devkitadv/arm-agb-elf/lib/

#Ne pas toucher à ce qui se trouve en dessous --------------------------------------------
# (Do not touch to something below ------------------------------------------------------)

SHELL = sh.exe

.OFILES = $(.SFILES:.s=.o) $(.CFILES:.c=.o)
ASFLAGS = -mthumb-interwork
CFLAGS = -g -O2 -I$(C_INCLUDE_PATH) -mthumb-interwork \
-nostdlib -Wall -save-temps -fverbose-asm

LDFLAGS += -Map $(MAPFILE) -nostartfiles \
-Ttext 0x08000000 -Tbss 0x03000000 \
-L$(GCC_EXEC_PREFIX) \
-L. \
-Tlnkscript

DEPENDFILE = Makedepend
MAPFILE = out.map
TARGET_ELF = out.elf

$(TARGET_BIN): $(TARGET_ELF)
objcopy -v -O binary $< $@

$(TARGET_ELF): $(.OFILES) Makefile $(.AFILES) $(DEPENDFILE)
@echo > $(MAPFILE)
$(CC) -g -o $@ $(.OFILES) -Wl,$(LDFLAGS)

$(DEPENDFILE):
$(CC) $(CFLAGS) -M $(.CFILES) > $(DEPENDFILE)

include $(DEPENDFILE)


et voici mon execution :

C:\Documents and Settings\LordMantel\Bureau\devgba\dev\projects\exemple>make
gcc -g -o out.elf crt0.o main.o -Wl,-Map out.map -nostartfiles -Ttext 0x08000000
-Tbss 0x03000000 -L/cygdrive/C/devkitadv/arm-agb-elf/lib/ -L. -Tlnkscript
/cygdrive/c/devkitadv/bin/arm-agb-elf-ld: cannot find -lgcc
make: *** [out.elf] Error 1



si vous avez une idée pour me m'aider, çà serait super, merci.
La durée d'une minute dépend de quel côté de la porte de la salle de bain on se trouve.

2

Il faut que tu mettes ton fichier libgcc.a à l'endroit attendu par ld.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

3

-

4

Ok, j'ai copier un fichier dans un autre repertoir et la compilation du fichier d'exemple march niquel, mais lorsque je doit compiler mes projets, j'ai d'autres erreurs : au début je n'avais pas vu que le makefile appelait l'utilisation du fichier 'linkscript' donc je l'ai copier dans le même répertoir et maintenant j'ai cette erreur :

C:\Documents and Settings\LordMantel\Bureau\devgba\dev\projects\video>make
as -mthumb-interwork -o crt0.o crt0.s
gcc -g -O2 -I/cygdrive/C/devkitadv/arm-agb-elf/include/ -mthumb-interwork -nostd
lib -Wall -save-temps -fverbose-asm -c -o video.o video.c
gcc -g -o out.elf crt0.o video.o -Wl,-Map out.map -nostartfiles -Ttext 0x0800000
0 -Tbss 0x03000000 -L/cygdrive/C/devkitadv/arm-agb-elf/lib/ -L. -Tlnkscript
/cygdrive/c/devkitadv/bin/arm-agb-elf-ld: Warning: __main.o does not support int
erworking, whereas out.elf does
/cygdrive/c/devkitadv/bin/arm-agb-elf-ld: Warning: _ctors.o does not support int
erworking, whereas out.elf does
/cygdrive/c/devkitadv/bin/arm-agb-elf-ld: Warning: unwind-dw2-fde.o does not sup
port interworking, whereas out.elf does
/cygdrive/c/devkitadv/bin/arm-agb-elf-ld: Warning: abort.o does not support inte
rworking, whereas out.elf does
/cygdrive/c/devkitadv/bin/arm-agb-elf-ld: Warning: atexit.o does not support int
erworking, whereas out.elf does
/cygdrive/c/devkitadv/bin/arm-agb-elf-ld: Warning: impure.o does not support int
erworking, whereas out.elf does
/cygdrive/c/devkitadv/bin/arm-agb-elf-ld: Warning: malloc.o does not support int
erworking, whereas out.elf does
/cygdrive/c/devkitadv/bin/arm-agb-elf-ld: Warning: mallocr.o does not support in
terworking, whereas out.elf does
/cygdrive/c/devkitadv/bin/arm-agb-elf-ld: Warning: mlock.o does not support inte
rworking, whereas out.elf does
/cygdrive/c/devkitadv/bin/arm-agb-elf-ld: Warning: sbrkr.o does not support inte
rworking, whereas out.elf does
/cygdrive/c/devkitadv/bin/arm-agb-elf-ld: Warning: signal.o does not support int
erworking, whereas out.elf does
/cygdrive/c/devkitadv/bin/arm-agb-elf-ld: Warning: signalr.o does not support in
terworking, whereas out.elf does
/cygdrive/c/devkitadv/bin/arm-agb-elf-ld: Warning: strlen.o does not support int
erworking, whereas out.elf does
/cygdrive/c/devkitadv/bin/arm-agb-elf-ld: Warning: syscalls.o does not support i
nterworking, whereas out.elf does
/cygdrive/c/devkitadv/bin/arm-agb-elf-ld: Warning: errno.o does not support inte
rworking, whereas out.elf does
/cygdrive/c/devkitadv/bin/arm-agb-elf-ld: Warning: freer.o does not support inte
rworking, whereas out.elf does
crt0.o: In function `__FarProcedure':
crt0.o(.text+0x204): undefined reference to `AgbMain'
/cygdrive/C/devkitadv/arm-agb-elf/lib//libgcc.a(__main.o): In function `__do_glo
bal_dtors':
__main.o(.text+0x74): undefined reference to `__EH_FRAME_BEGIN__'
/cygdrive/C/devkitadv/arm-agb-elf/lib//libgcc.a(__main.o): In function `__do_glo
bal_ctors':
__main.o(.text+0x100): undefined reference to `__EH_FRAME_BEGIN__'
make: *** [out.elf] Error 1


çà commence à m'énerver, qu'utilisez-vous pour compiler ?

y a-t-il quelque chose de mieux ?

merci.
La durée d'une minute dépend de quel côté de la porte de la salle de bain on se trouve.

5

-

6

LOL je comprend mieux ton avant-dernier post.

Ok, merci tout de même quesqui est le mieux ? arm pur ? ou arm+thumb ?
La durée d'une minute dépend de quel côté de la porte de la salle de bain on se trouve.

7

-

8

et ça:
__main.o(.text+0x74): undefined reference to `__EH_FRAME_BEGIN__'
/cygdrive/C/devkitadv/arm-agb-elf/lib//libgcc.a(__main.o): In function `__do_glo
bal_ctors':
__main.o(.text+0x100): undefined reference to `__EH_FRAME_BEGIN__'
make: *** [out.elf] Error 1

c'est qu'il te manque crt0.o ou alors crtbegin.o ou crtend.o ou tous les trois...
il faut que tu les links avec ton projets, parfois crt0.o suffit.
Vive le coding gba.
www.codegba.fr.st

9

Pourquoi ne pas supprimer -nostartfiles tout simplement? Comme ça, les crt*.o seront linkés automatiquement.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité