Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    9

    [C - Make] Makefile non va a buon fine

    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!
    Se ti sballi stai dicendo NO

  2. #2
    In alcuni errori si vede che non linki bene i prototipi di funzione, nel makefile tra l' altro scrivi
    VMEMD_OBJ = obj/gestione_Mem.o obj/frameMem.o obj/gestione_fifo
    ma facci caso, gestione_fifo non ha il .o alla fine.

    Ci sono errori banali quanto fondamentali, prova a compilare a mano i vari file, giusto per vedere se può dipendere dal makefile. Un altro problema è che poi è difficile correggere tutto senza avere tra le mani il progetto!!!

    Ciao Sateam!
    Non ho firme, ma la ferma speranza che compaia una firma automatica ogni qualvolta ci sia bisogno di una firma, fermo restando che la speranza di una firma è l' ultima a morire

  3. #3
    non ti conviene usare un IDE?

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    9
    mmm infatti il la mancanza del .o ha risolto un po di cose...
    per ora va tutto bene ma in seguito aggiungerò altri target quindi le cose potrebbero ricomplicarsi!


    un IDE?? non so bene cosa sia ma cmq il progetto prevede l'uso del make e non posso cambiare!
    cmq grazie!
    Se ti sballi stai dicendo NO

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.