Pagina 1 di 1

[RISOLTO] Problema con Makefile

Inviato: ven 30 set 2011, 11:00
da boh
Ciao a tutti :)
Sto lavorando all'espansione di un progetto, il quale è suddiviso in più directory e poi il tutto viene compilato con make.
Mi spiego meglio. La struttura del progetto è la seguente:

Codice: Seleziona tutto

src - binzrs (host_binzrs.c, host_binzrs.h)
    - core (archive.c, archive.h, misc.c, misc.h, profile.c, profile.h, prtg.c, purge.c, purge.h, store.c, store.h)
    - gens (cuda_gens.cu, cuda_gens.h, gens_common.c, gens_common.h, host_gens.c, host_gens.h)
    - halgs (cuda_bs_des_kernel.cu, cuda_bs_sboxes.h, cuda_halgs.c, cuda_halgs.h, host_halgs.h, des_crypt3.c, md5_crypt3.c)
    - include (algorithm.h, binarizer.h, prtg.h, rbtable.h, screen.h)
    - rfuncs (cuda_rfuncs.c, cuda_rfuncs_kernels.cu, host_rfuncs.c, host_rfuncs.h)
    - utils (prtar.c, prtdump.c)
Io, oltre ad alcune modifiche minori ai files già esistenti, devo aggiungere alla directory /halgs i seguenti files:
- cuda_ntlm.h;
- cuda_ntlm_kernel.cu;
- ntlm_crypt.c;
- ntlm_crypt.h.

Fatta la descrizione preliminare, arrivo al mio problema, il Makefile! E' già presente un Makefile per i sorgenti pre-esistenti e non riesco ad aggiungere regole e quanto altro per far compilare anche i miei file con tutto il resto.
Il Makefile in questione lo allego perchè è troppo lungo da mettere qui (ho aggiunto .txt, altrimenti non me lo faceva allegare).

Sapete darmi qualche consiglio o per lo meno consigliarmi da dove cominciare?
Intanto grazie ;)

Re: Problema con Makefile

Inviato: ven 30 set 2011, 13:09
da Ansa89
Qual'è il target che dovresti aggiungere?

Re: Problema con Makefile

Inviato: ven 30 set 2011, 13:26
da boh
boh ha scritto: Io, oltre ad alcune modifiche minori ai files già esistenti, devo aggiungere alla directory /halgs i seguenti files:
- cuda_ntlm.h;
- cuda_ntlm_kernel.cu;
- ntlm_crypt.c;
- ntlm_crypt.h.
Questi sono i file che devo aggiungere.
I due sorgenti .c e .cu includono i relativi header qui sopra; gli header, invece, oltre ad alcune librerie di sistema, includono anche algorithm.h che si trova in /include.

Re: Problema con Makefile

Inviato: ven 30 set 2011, 14:33
da fgcl2k
Il Makefile che hai allegato non è scritto a mano ma generato da automake a partire da un file Makefile.am.
I file li devi quindi aggiungere in Makefile.am (nella directory halgs dovrebbe essercene uno) e poi lanciare ./configure dalla directory principale. Quando configure ha finito puoi lanciare make.

Re: Problema con Makefile

Inviato: ven 30 set 2011, 15:01
da boh
Intanto grazie della risposta :)
Makefile.am è il seguente:

Codice: Seleziona tutto

.cu.o:
	$(NVCC) -o $@ -c $< $(CUDA_CFLAGS)

bin_PROGRAMS = prtg prtdump prtar

prtg_LDADD = $(LIBS) $(CUDA_LIBS)
prtg_CFLAGS =  

prtg_SOURCES = binzrs/host_binzrs.c \
					binzrs/host_binzrs.h \
					core/prtg.c \
					core/misc.c \
					core/misc.h \
					core/store.c \
					core/store.h \
					core/purge.c \
					core/purge.h \
					core/archive.c \
					core/archive.h \
					core/profile.c \
					core/profile.h \
					gens/cuda_gens.cu \
					gens/cuda_gens.h \
					gens/host_gens.c \
					gens/host_gens.h \
					gens/gens_common.c \
					gens/gens_common.h \
					include/algorithm.h \
					include/binarizer.h \
					include/screen.h \
					include/prtg.h \
					include/rbtable.h \
					rfuncs/cuda_rfuncs.c \
					rfuncs/cuda_rfuncs_kernels.cu \
					rfuncs/cuda_rfuncs.h \
					rfuncs/host_rfuncs.c \
					rfuncs/host_rfuncs.h \
					halgs/cuda_halgs.c \
					halgs/cuda_bs_des_kernel.cu \
					halgs/cuda_halgs.h \
					halgs/des_crypt3.c \
					halgs/md5_crypt3.c \
					halgs/host_halgs.h \
					halgs/cuda_bs_sboxes.h 

prtdump_LDADD = $(LIBS) $(CUDA_LIBS)
prtdump_CFLAGS =  					
					
prtdump_SOURCES = utils/prtdump.c \
					binzrs/host_binzrs.c \
					binzrs/host_binzrs.h \
					core/misc.c \
					core/misc.h \
					core/store.c \
					core/store.h \
					core/purge.c \
					core/purge.h \
					core/archive.c \
					core/archive.h \
					core/profile.c \
					core/profile.h \
					gens/cuda_gens.cu \
					gens/cuda_gens.h \
					gens/host_gens.c \
					gens/host_gens.h \
					gens/gens_common.c \
					gens/gens_common.h \
					include/algorithm.h \
					include/binarizer.h \
					include/screen.h \
					include/prtg.h \
					include/rbtable.h \
					rfuncs/cuda_rfuncs.c \
					rfuncs/cuda_rfuncs_kernels.cu \
					rfuncs/cuda_rfuncs.h \
					rfuncs/host_rfuncs.c \
					rfuncs/host_rfuncs.h \
					halgs/cuda_halgs.c \
					halgs/cuda_bs_des_kernel.cu \
					halgs/cuda_halgs.h \
					halgs/des_crypt3.c \
					halgs/md5_crypt3.c \
					halgs/host_halgs.h \
					halgs/cuda_bs_sboxes.h 
					
prtar_LDADD = $(LIBS) $(CUDA_LIBS)
prtar_CFLAGS =  					
					
prtar_SOURCES = utils/prtar.c \
					binzrs/host_binzrs.c \
					binzrs/host_binzrs.h \
					core/misc.c \
					core/misc.h \
					core/store.c \
					core/store.h \
					core/purge.c \
					core/purge.h \
					core/profile.c \
					core/profile.h \
					core/archive.c \
					core/archive.h \
					gens/cuda_gens.cu \
					gens/cuda_gens.h \
					gens/host_gens.c \
					gens/host_gens.h \
					gens/gens_common.c \
					gens/gens_common.h \
					include/algorithm.h \
					include/binarizer.h \
					include/screen.h \
					include/prtg.h \
					include/rbtable.h \
					rfuncs/cuda_rfuncs.c \
					rfuncs/cuda_rfuncs_kernels.cu \
					rfuncs/cuda_rfuncs.h \
					rfuncs/host_rfuncs.c \
					rfuncs/host_rfuncs.h \
					halgs/cuda_halgs.c \
					halgs/cuda_bs_des_kernel.cu \
					halgs/cuda_halgs.h \
					halgs/des_crypt3.c \
					halgs/md5_crypt3.c \
					halgs/host_halgs.h \
					halgs/cuda_bs_sboxes.h 								

CLEANFILES = core/*.orig utils/*.orig halgs/*.orig binzrs/*.orig rfuncs/*.orig *.prt *.out
	
Deduco che devo solo aggiungere i file con i loro percorsi alle varie SOURCES e poi lanciare configure seguito da make?

Re: Problema con Makefile

Inviato: sab 1 ott 2011, 9:12
da 414N
boh ha scritto:Deduco che devo solo aggiungere i file con i loro percorsi alle varie SOURCES e poi lanciare configure seguito da make?
Dipende.
Nel Makefile.am sono indicati tre binari da produrre da vari sorgenti. Devi aggiungere i tuoi sorgenti al binario (o ai binari) che poi li dovranno utilizzare.
PS: credo sia inutile inserire gli header tra i sorgenti da compilare, dato che dovrebbero essere "pescati" in automatico. Prova a rimuverli per vedere come si comporta make.

Re: Problema con Makefile

Inviato: lun 3 ott 2011, 0:07
da boh
Con configure tutto si è risolto! :D
Un grazie anche a 414N per la risposta; per quanto riguarda gli header, proverò a toglierli ;)

Re: Problema con Makefile

Inviato: lun 3 ott 2011, 21:04
da fgcl2k
boh ha scritto:Con configure tutto si è risolto! :D
Un grazie anche a 414N per la risposta; per quanto riguarda gli header, proverò a toglierli ;)
Probabilmente in fase di compilazione funzionerebbe lo stesso, però "romperesti" alcuni target del Makefile, tipo

Codice: Seleziona tutto

make dist
Quando generi l'archivio per distribuire il tuo programma i file .h non indicati non saranno presenti.