30

1- ta page web passe bien sur mon internet explorer. Rassuré ?
2- pour le makefile, je tourne sans probleme avec celui qui est dans http://cermics.enpc.fr/~lejeune/Z/make.zip (je viens tout juste de copier mon makefile actuel dedans histoire d'etre sur que ce soit la derniere versoin).
Tu le recuperes, tu changes les 4 premieres lignes pour que ca aille bien avec ton programme. Tu mets ICON en commentaire si tu veux et tu changes SDK_INCLUDE_DIR et SDK_LIB_DIR si t'as pas installe le SDK au meme endroit que moi. Et c'est tout, ca devrait suffire et rouler comme sur des roulettes. non ?

31

1- ta page web passe bien sur mon internet explorer. Rassuré ?

Oui je sais qu'elle passe parce-que j'ai fait mon CSS à partir du rendu que ça dopnnait sous FireFox mais je regardais en même temps si ça passait sur IE.
En faisant l'inverse ça aurait été plus compliqué parce-que FF est plus réglo et puis de toute manière il offre un meilleur rendu.
Le truc c'est que c'est un peu moche mais bon ... tant pis pour ceux qui utilisent IE. grin
Tu le recuperes, tu changes les 4 premieres lignes pour que ca aille bien avec ton programme.

Oui enfin avec mon tuto. C'est juste pour que ça colle avec la méthode .bat, sinon il faudrait que je fasse deux explications.
Et c'est tout, ca devrait suffire et rouler comme sur des roulettes. non ?

Ouais, je vais voir si ça compile comme il faut.

32

Ah, il y a un petit problème :
make: *** No rule to make target '-specs=gp32_sdk.specs', needed by 'C:/devkitARM_r8/lib/gpstart.o'. Stop.

33

gna fou
Euh.............. C'est clair que c'est pas clair. On va essayer un truc:
Vire moi gpstart.o de C:\devkitARM_r8\lib .
Prends le gpstart.c qui se trouve dans le repertoire du SDK gamepark.
Mets le au milieu de tes fichiers sources et laisse gpstart.o dans la liste des fichiers objets necessaire a la compilation du programme.

J'avais pas trop lu la partie de ton tutorial qui disait de mettre gpstart.o dans C:\devkitARM_r8\lib . Perso, ca ne me plait pas trop. Je prefere mettre gpstart.c dans chaque projet. C'est un tout petit fichier super rapide a compile. Et au moins t'es sur qu'il a ete compile avec le meme compilateur et avec les memes options que tous les autres .o de ton projet. Et ca t'evite plein de soucis du style ce genre de message d'erreur.

34

Raphaël :
Ah, il y a un petit problème :
make: *** No rule to make target '-specs=gp32_sdk.specs', needed by 'C:/devkitARM_r8/lib/gpstart.o'. Stop.

Je serais curieux de voir a quoi ressemble les lignes du makefile que tu as change pour que ca soit adapte a ton programme de test et que ca fasse cette erreur.

35

PROG_NAME = botkiller
LONG_PROG_NAME = botkiller v1.0
OBJS = c:/devkitARM_r8/lib/gpstart.o gpmain.o C:/devkitARM_r8/arm-elf/lib/gp32_gpsdk.specs
AUTHOR = Raphaël Domenge
#ICON = %5.bmp

SDK_INCLUDE_DIR = C:/devkitARM_r8/include.
SDK_LIB_DIR = C:/devkitARM_r8/arm-elf/lib
SDK_LIBS = -lgpfont -lgpstdlib -lgpos -lgpgraphic -lgpstdio -lgpsound -lgpmem
OTHER_LIBS = -lm


CC = arm-elf-gcc
AS = arm-elf-as

INCDIRS = -Ic:/devkitARM_r8/include -I$(SDK_INCLUDE_DIR)

CFLAGS = $(INCDIRS) -DLITTLE_ENDIAN -DGP32 -mcpu=arm9tdmi -mtune=arm9tdmi -fexpensive-optimizations -mapcs -Os -mstructure-size-boundary=8 -mno-thumb-interwork -fno-builtin -fno-common -fno-exceptions -finline-functions -fomit-frame-pointer -fshort-enums -ffast-math -fshort-double

CPPFLAGS = $(CFLAGS)

LDFLAGS = -L$(SDK_LIB_DIR) -specs=gp32_gpsdk.specs $(SDK_LIBS) $(OTHER_LIBS)

TARGET = $(PROG_NAME).fxe

all: $(TARGET)

cleanobjs:
del /F $(OBJS)

cleanbin:
del /F $(PROG_NAME).fxe $(PROG_NAME).gxb $(PROG_NAME).elf

clean: cleanobjs cleanbin

# Dependency rules

$(TARGET): $(PROG_NAME).gxb
b2fxec -t "$(LONG_PROG_NAME)" -a "$(AUTHOR)" $(ICON) $? $@

$(PROG_NAME).gxb: $(PROG_NAME).elf
arm-elf-objcopy -O binary $? $@

$(PROG_NAME).elf: $(OBJS)
$(CC) $(OBJS) $(LIBDIRS) $(LDFLAGS) -o $@

36

OBJS = c:/devkitARM_r8/lib/gpstart.o gpmain.o
(gp32_gpsdk.specs n'est pas un programme qui se compile. Je crois que c'est plutot un fichier des options de link)

Et ca sert a rien de preciser qu'il faut utiliser ce fichier c'est deja ecrit dans cette ligne la
LDFLAGS = -L$(SDK_LIB_DIR) -specs=gp32_gpsdk.specs $(SDK_LIBS) $(OTHER_LIBS)

Voila tout s'arrange, tout s'eclaircit et tout fonctionne.

37

Et encore une modif a faire que je n'avais pas vue:
remplacer -Os par -O3 !
Le -Os provient d'Orion_ qui aura surement l'explication de son choix mais je pense que sur la gp32 on a plus des problemes de vitesse CPU que des problemes d'espace memoire pour stocker le programme.
Donc on accelere le programme quitte a le rendre 50ko plus gros --> -O3

P.S: je viens de tester vite fait sur un programme: aucune difference entre -O3 et -Os. Soit j'ai fait une erreur, soit le compilateur n'est pas tres au poins

38

Bah moi avec mon code optimiser à la main qui_faudrait_pas_optimiser_parce-que_c'est_un_compilateur_arm ça marche très très bien !
Il y a 2ko de différence.
Mais ce n'est pas plus rapide (enfin sur gp32 c'est dur à tester). Dans un bench c'était même plus rapide en -Os qu'en -O3 et si tu as lu mon tuto à la fin j'en parle.

39

Raphaël :
Bah moi avec mon code optimiser à la main qui_faudrait_pas_optimiser_parce-que_c'est_un_compilateur_arm ça marche très très bien !
Il y a 2ko de différence.
Mais ce n'est pas plus rapide (enfin sur gp32 c'est dur à tester). Dans un bench c'était même plus rapide en -Os qu'en -O3 et si tu as lu mon tuto à la fin j'en parle.

Ah, je l'avais lu mais je m'en souvenais plus. J'ai aussi teste -O1, la j'ai aussi environ 2ko d'ecart. Bref on ne doit pas faire de code suffisament "barbare" pour que les optimisations changent grand chose.

40

Oui mais moi je n'ai pas grand chose pour le moment : juste un bout de moteur.

Sinon ça ne marche toujours pas. Et puis le gpstart.o, c'est parce-que Orion_ faisait comme ça, et il faut qu'il soit compilé pour le .bat
Avec ton premier makefile tout marche nickel mais les lignes que tu as rajouté font que ça ne marche pas.
Et l'erreur est vraiment bizarre oui. Tu n'a aps de problème toi ?

41

moi j'avais eu la meme erreur que toi Raphaël, mais je sais pas ce que j'ai foutu maintenant j'ai un pb avec gp32_gpsdk_cr0.o(.text+0x24c): In function 'CopyZIData':
: undefined reference to 'main'

je pige pas pkoi il me cause de main :-/

42

Deja le makefile qui se trouve dans http://cermics.enpc.fr/~lejeune/Z/make.zip est mon makefile actuel du projet sur lequel je bosse. Chez moi il n'y a pas de soucis (enfin si, j'ai des tas de soucis mais c'est pas lie au makefile, c'est des bugs dans mon code)
Mais si ca ne marche pas chez vous, il y a un probleme quelque part...

les trucs qui font peut-etre que ca marche chez moi et pas chez vous:
- j'utilise gamepark_sdk.zip donne en lien sur le site de Raph pour mes repertoire /include et /lib du sdk
- j'ai copie le fichier gpstart.c (contenu dans gamepark_sdk.zip) dans le repertoire de mon projet.
- dans le makefile j'ai mis gpstart.o au milieu de la liste de mes fichiers .o (variable OBJS)
- C:\devkitARM_r8\bin est dans mon PATH et quand je tape make, arm-elf-gcc, arm-elf-as, etc. ce sont ceux du repertoire C:\devkitARM_r8\bin qui sont appeles (j'ai verifie en utilisant la command which)
- le prototype de ma fonction principale est void GpMain(void *arg) . la fonction int main (int arg_len, char * arg_v) est deja definie dans gpstart.c.

EDIT: Jycet, copie gpstart.c dans le repertoire de ton projet. Tu vas voir qu'il va arreter de raler a propos de la fonction main qui n'existe pas.

43

pb resolue c'etait mon vieux gpstart.c de minigp32 v1 et ca gaufrait la compile.
J'ai mis celui de Raphaël là ou tu m'as dit et ça compile ! smile

44

juste une question ayant pas du tout l'habitude de compiler avec gcc et make (j'utilise ads) quand on à plusieurs fichier headers ou des images en .c dans le projet comment on fait paske j'ai beau suivre le tuto et toutes les explications je me chope toujours une erreur de compil sad je pige que d'alle

c l'exemple 9 du SDK GP http://dcdev.free.fr/exo9.rar si kk'1 peut m'expliquer la façon de faire , ça serais pas mal smile

avatarspace reporter

45

les images/musiques/sons sont des ressources tu peux donc les mettres en header et les inclures en debut du gpmain.c sans probleme (c'est ce que je fais)

maintenant pour ce qui est d'inclure d'autres fichiers *.C ... ben je sais pas je garde tout dans gpmain.c smile

46

pour les fichiers .c c la mm chose, un #include suffit

47

LOL smile merci les gars j'ai même pas pensé à les inclure en fait , sous ADS ya un projet et il prends en compte les .h ou .c donc pas besoin , ok ça marche nickel thx wink
avatarspace reporter