Sto facendo un progetto per l'università e ho iniziato ad usare il Makefile per agevolare la compilazione di tutti i fogli.
Premetto che non tutto del makefile mi è chiaro, specialmente la parte in cui si parla della data di ultima scrittura dei file che influirebbe sul makefile stesso.
vi posto il makefile:
codice:
CFLAGS = -Wall -g
MON_OBJ = obj/vmemMon.o obj/gest_comandi.o
VMEMD_OBJ = obj/gestione_Mem.o obj/frameMem.o obj/gestione_fifo
LIBVMEM_OBJ = obj/gestione_fifo.o obj/libvmem.o
LIB_GCOM = inc/gest_comandi.h
LIB_PAGE = inc/page.h
LIB_MACRO = inc/macro.h
LIB_VMEM = inc/libvmem.h
LIB_IND = inc/indirizzi.h
LIB_GSWAP = inc/gestione_swap.h
LIB_GMEM = inc/gestione_Mem.h
LIB_GFILE = inc/gestione_file.h
LIB_GFIFO = inc/gestione_fifo.h
LIB_FRAMEMEM = inc/frameMem.h
EXE = bin/vmemMon bin/vmemd lib/libvmem.a
all: $(EXE)
bin/vmemMon: $(MON_OBJ) lib/libvmem.a
cc -o bin/vmemMon $(MON_OBJ) -Llib/ -lvmem
lib/libvmem.a: src/libvmem.o $(LIBVMEM_OBJ)
ar rcs lib/libvmem.a $^
obj/libvmem.o: src/libvmem.c $(LIB_VMEM) $(LIB_GFIFO)
cc $(CFLAGS) -c src/libvmem.c -o $@
obj/vmemMon.o: src/vmemMon.c $(LIB_GCOM)
cc $(CFLAGS) -c src/vmemMon.c -o $@
obj/gestione_fifo.o: src/gestione_fifo.c $(LIB_GFIFO) $(LIB_GMEM) $(LIB_MACRO)
cc $(CFLAGS) -c src/gestione_fifo.c -o $@
obj/gestione_Mem.o: src/gestione_Mem.c $(LIB_IND) $(LIB_GSWAP) $(LIB_VMEM) $(LIB_GMEM)
cc $(CFLAGS) -c src/gestione_Mem.c -o $@
obj/gestione_swap.o: src/gestione_swap.c $(LIB_FRAMEMEM)
cc $(CFLAGS) -c src/gestione_swap.c -o $@
obj/page.o: src/page.c $(LIB_FRAMEMEM) $(LIB_PAGE) $(LIB_GFILE) $(LIB_MACRO)
cc $(CFLAGS) -c src/page.c -o $@
obj/gestione_file.o: src/gestione_file.c $(LIB_GFILE)
cc $(CFLAGS) -c src/gestione_file.c -o $@
obj/frameMem.o: src/frameMem.c $(LIB_FRAMEMEM) $(LIB_IND)
cc $(CFLAGS) -c src/frameMem.c -o $@
obj/indirizzi.o: src/indirizzi.c $(LIB_MACRO)
cc $(CFLAGS) -c src/indirizzi.c -o $@
obj/gest_comandi.o: src/gest_comandi.c $(LIB_GCOM)
cc $(CFLAGS) -c src/gest_comandi.c -o $@
bin/vmemd: $(VMEMD_OBJ)
cc $(CFLAGS) $^ -o $@
.PHONY: clean install
install:
make all
clean:
rm -f obj/*.o bin/* lib/*
quando avvio il make mi da sempre questo errore e le funzioni che dice di non trovare sono scritte da me e incluse con #include"../inc/libreria.h"
per altre librerie non ha riscontrato errori ma per questa si!!
vi posto l'errore:
codice:
make all
make[1]: ingresso nella directory «/home/moro/Scrivania/progetto»
cc -Wall -g -c src/vmemMon.c -o obj/vmemMon.o
cc -Wall -g -c src/gest_comandi.c -o obj/gest_comandi.o
cc -Wall -g -c src/gestione_fifo.c -o obj/gestione_fifo.o
cc -Wall -g -c src/libvmem.c -o obj/libvmem.o
ar rcs lib/libvmem.a src/libvmem.o obj/gestione_fifo.o obj/libvmem.o
cc -o bin/vmemMon obj/vmemMon.o obj/gest_comandi.o -Llib/ -lvmem
cc -Wall -g -c src/gestione_Mem.c -o obj/gestione_Mem.o
cc -Wall -g -c src/frameMem.c -o obj/frameMem.o
cc obj/gestione_fifo.o -o obj/gestione_fifo
/usr/lib/gcc/i486-linux-gnu/4.4.1/../../../../lib/crt1.o: In function `_start':
/build/buildd/eglibc-2.10.1/csu/../sysdeps/i386/elf/start.S:115: undefined reference to `main'
obj/gestione_fifo.o: In function `get_request_server':
/home/moro/Scrivania/progetto/src/gestione_fifo.c:215: undefined reference to `create'
/home/moro/Scrivania/progetto/src/gestione_fifo.c:222: undefined reference to `chk_pid'
/home/moro/Scrivania/progetto/src/gestione_fifo.c:229: undefined reference to `get'
/home/moro/Scrivania/progetto/src/gestione_fifo.c:236: undefined reference to `put'
/home/moro/Scrivania/progetto/src/gestione_fifo.c:249: undefined reference to `chk'
collect2: ld returned 1 exit status
make[1]: *** [obj/gestione_fifo]
Errore 1 make[1]: uscita dalla directory «/home/moro/Scrivania/progetto»
make: *** [install] Errore 2
Sapete dirmi se c'è un errore nell'uso del makefile ?!?
Grazie mille. ciao!