question: est ce qu'il est possible de faire de la compilation séparée avec tigcc en kernel?
Car il n'a envoyé une serie d'erreur impressionante au linkage quand j'ai voulu compiler CC en kernel
question: est ce qu'il est possible de faire de la compilation séparée avec tigcc en kernel? Car il n'a envoyé une serie d'erreur impressionante au linkage quand j'ai voulu compiler CC en kernelMoi aussi... Il me le fait avec as. Mais plutôt que regarder la première erreur et de la corriger, je reboote le PC tellement ça fait ramer sous
J'ai cherché des définitions de makefile sur google tout à l'heure, qu'est ec que c'est concrètement? Un fichier de commande je suppose, comme un .bat?
on ecris le fichier makefile suivant:CC=tigcc -O2 -DUSE_KERNEL # la commande de compilation est habituellement placée dans une variable du nom de CC projet_test: projet test # la première cible est celle qui est construite pas défaut. # Ici par défaut on construit le projet et on teste projet: main.89z data.89y # pour faire le projet il faut construire 'main.89z' et 'data.89z' main.89z: main.c module1.o module2.o # main.89z n'est recompilé que s'il y a eu un modification dans les fichier suivent ${CC} main.c module.o module2.o # Commande utilisée si compilation nécessaire. ${CC} est remplacé par sa valeur module1.o: module1.c # module1.o n'est recompilé que s'il y a des modifications dans "module1.c" ${CC} -c module1.c module2.o: module2.c # module2.o n'est recompilé que s'il y a des modifications dans "module2.c" ${CC} -c module2.c data.89y: data.bin # Supossons que tu convertit un fichier binaire en ficher de données TI convertisseur data.bin # en utilisant un outil que j'ai appellé 'convertisseur' test: main.89z data.89y # et pour tester tilp -cmdline .. main.89z data.89z # on evoie via TILP clean: # souvent un definit "clean" pour effacer les fichier produits et ainsi tout recompiler rm *.89z *.89y *.o
"make" lancera la compilation se projet et lance le test
"make test" ne lancera que le test
"make projet" ne lancera que la compilation
"make clean" effacera tous les fichiers des compilations précédantes. Le prochain "make" reconstruira donc tout.
...
fmon.o : fmon.c fmon.h cc -c -o fmon.o fmon.c
Uther :
A chaque fois, make verifie si le fichiers qui sont nécéssaires pour construire la cible ont été modifiés.
spectras :
un mot : automake
(bon, y a des bloatwares pour faire des scripts de configure et tout ca qui font peut-etre des trucs du genre, mais je me suis jamais aventuré la dedans...)
Wikipedia
: It [...] must be used with autoconf, another GNU tool.
la par exemple si module1.c inclut toto.h,et bien dans ce cas tu mets toto.h dans les dépendance c'est tout. Si on fait pas trop d'alzeimer en général on s'en souvient.
si tu veux rajouter un #define sur la ligne de commandeS'est vrai que ca j'y avais pas pensé. La solution est simple "make clean ; make" . Mais c'est vrai que c'est le genre de truc qu'on pourait facilement oublier.
si l'ABI change, tu peux avoir des plantages plus ou moins subtils...Certes, mais bon quand tu vieins de changer les libraires et/ou le compilateur ca me parrais quand même prudent de faire systematiquement "make clean ; make"
PREOS=../../preos/ PREOS_SRC=$(PREOS)/src PREOS_STDLIB=$(PREOS)/stdlib.9xz GPL= ############################################################################## CC=tigcc CFLAGS=-Os -fomit-frame-pointer -S -Wall CSFLAGS=-Os -fomit-frame-pointer -S -Wall INCLUDES=-I. -Ic ASM=tigcc A68K=a68k A68K_INCLUDE=-ic -i$(PREOS_SRC) S2ASM=../bin/s2asm MAKETIB=../bin/maketib STRIP=../bin/strip MV=mv -f CP=cp -f SOURCE=c/unpack.asm c/qsort.asm c/printf.asm c/md5.asm c/float.asm c/files.asm c/ellipse.asm c/clipline.asm c/bitmap.asm Bcd.asm Estack2.asm Heap.asm Link.asm Misc.asm Script.asm Vat.asm Boot.asm Estack.asm Ints.asm Long.asm PedroM.asm shell2.asm Vectors.asm Cert.asm Flash.asm Kernel.asm Memstr.asm Process.asm Shell.asm Window.asm Dialog.asm Graph.asm Library.asm Misc2.asm RomVoid.asm Strings.asm stdlib.bin TOOL=../bin/maketib ../bin/s2asm all: pedrom ../bin/s2asm: cd ../bin/ ; make s2asm ../bin/maketib: cd ../bin/ ; make maketib ../bin/strip: cd ../bin/ ; make strip $(PREOS_STDLIB): cd $(PREOS) ; make # Far from perfect stdlib.bin: $(PREOS_STDLIB) $(STRIP) $(STRIP) $(PREOS_STDLIB) stdlib.bin c/bitmap.asm: c/bitmap.c ../bin/s2asm $(CC) $(CFLAGS) $(INCLUDES) c/bitmap.c -o c/bitmap.s $(S2ASM) c/bitmap.s c/bitmap.asm LBitmap 5 $(RM) c/bitmap.s c/clipline.asm: c/clipline.c ../bin/s2asm $(CC) $(CFLAGS) $(INCLUDES) c/clipline.c -o c/clipline.s $(S2ASM) c/clipline.s c/clipline.asm LClipLine 5 $(RM) c/clipline.s c/ellipse.asm: c/ellipse.c ../bin/s2asm $(CC) $(CFLAGS) $(INCLUDES) c/ellipse.c -o c/ellipse.s $(S2ASM) c/ellipse.s c/ellipse.asm LEllipse 5 $(RM) c/ellipse.s c/files.asm: c/files.c ../bin/s2asm $(CC) $(CFLAGS) $(INCLUDES) c/files.c -o c/files.s $(S2ASM) c/files.s c/files.asm LFiles 5 $(RM) c/files.s c/float.asm: c/float.c ../bin/s2asm $(CC) $(CFLAGS) $(INCLUDES) c/float.c -o c/float.s $(S2ASM) c/float.s c/float.asm LFloat 5 $(RM) c/float.s c/md5.asm: c/md5.c ../bin/s2asm $(CC) $(CFLAGS) $(INCLUDES) c/md5.c -o c/md5.s $(S2ASM) c/md5.s c/md5.asm LMD5 5 $(RM) c/md5.s c/printf.asm: c/printf.c ../bin/s2asm $(CC) $(CSFLAGS) $(INCLUDES) c/printf.c -o c/printf.s $(S2ASM) c/printf.s c/printf.asm LPrintf 5 $(RM) c/printf.s c/qsort.asm: c/qsort.c ../bin/s2asm $(CC) $(CFLAGS) $(INCLUDES) c/qsort.c -o c/qsort.s $(S2ASM) c/qsort.s c/qsort.asm LQsort 5 $(RM) c/qsort.s c/side92.asm: c/side.c ../bin/s2asm $(CC) $(CSFLAGS) -DPEDROM -DTI92P $(INCLUDES) c/side.c -o c/side92.s $(S2ASM) c/side92.s c/side92.asm LSide 5 $(RM) c/side92.s c/side89.asm: c/side.c ../bin/s2asm $(CC) $(CSFLAGS) -DPEDROM -DTI89 $(INCLUDES) c/side.c -o c/side89.s $(S2ASM) c/side89.s c/side89.asm LSide 5 $(RM) c/side89.s c/unpack.asm: c/unpack.c ../bin/s2asm $(CC) $(CFLAGS) $(INCLUDES) c/unpack.c -o c/unpack.s $(S2ASM) c/unpack.s c/unpack.asm LUnpack 5 $(RM) c/unpack.s pedrom89: $(TOOL) $(SOURCE) c/side89.asm $(A68K) $(A68K_INCLUDE) PedroM.asm -vTI89 $(GPL) $(MAKETIB) PedroM.o $(RM) PedroM.o $(MV) PedroM.tib pedrom89.tib pedrom92: $(TOOL) $(SOURCE) c/side92.asm $(A68K) $(A68K_INCLUDE) PedroM.asm -vTI92P $(GPL) $(MAKETIB) PedroM.o $(RM) PedroM.o $(MV) PedroM.tib pedrom92.tib pedrom8x: $(TOOL) $(SOURCE) c/side89.asm $(A68K) $(A68K_INCLUDE) PedroM.asm -vTI89TI $(GPL) $(MAKETIB) PedroM.o $(RM) PedroM.o $(MV) PedroM.tib pedrom8x.tib pedrom9x: $(TOOL) $(SOURCE) c/side92.asm $(A68K) $(A68K_INCLUDE) PedroM.asm -vV200 $(GPL) $(MAKETIB) PedroM.o $(RM) PedroM.o $(MV) PedroM.tib pedrom9x.tib pedrom: pedrom89 pedrom92 pedrom8x pedrom9x $(MV) *.tib .. clean: $(RM) c/*.asm c/*~ $(RM) *~ pedrom89.tib pedrom92.tib pedrom8x.tib pedrom9x.tib $(RM) stdlib.bin
Ca a des chances d'etre une usine a gaz, non ? Tu t'en sers vraiment ? Perso je trouve ca bcp plus propre de faire un truc juste a base de makefiles plutot que d'avoir des scripts de configure compliqués qui en plus ne servent que qd t'utilises d'autres usines a gaz comme bibliotheques ou que tu veux tourner sur des systemes prehistoriques... Mais si comme tu le sous-entends ca permet de faire des trucs simples et robustes, faut voir ^^
1. Il faut que tu rajoutes le Makefile dans tes dependances.1. C'est vrai j'y avais jamais pensé.
2. Il faut que tu rajoutes main.89z data.89z au dependances de test. 3. J'ajouterai une ligne pour auto-recompiler convertisseur.
PpHd :
./105: Tout s'explique par ta propre incompetence. N'accuses pas Make de tes lacunes
Tenez le Makefile de PedroM<snip>
Ca a des chances d'etre une usine a gaz, non ? Tu t'en sers vraiment ? Perso je trouve ca bcp plus propre de faire un truc juste a base de makefiles plutot que d'avoir des scripts de configure compliqués qui en plus ne servent que qd t'utilises d'autres usines a gaz comme bibliotheques ou que tu veux tourner sur des systemes prehistoriques... Mais si comme tu le sous-entends ca permet de faire des trucs simples et robustes, faut voir ^^
Oui et non. C'est une usine a gaz, mais il n'y pas vraiment le choix si tu veux des scripts portables
Sur TI, un Makefile est amplement suffisant.