[RISOLTO] Problema con Makefile

Forum dedicato alla programmazione.

Moderatore: Staff

Regole del forum
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Rispondi
Avatar utente
boh
Linux 4.x
Linux 4.x
Messaggi: 1027
Iscritto il: ven 16 set 2005, 0:00
Slackware: 14.2 (x64)
Kernel: 4.4.111
Desktop: KDE 4.14.32
Località: Milano
Contatta:

[RISOLTO] Problema con Makefile

Messaggio 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 ;)
Allegati
Makefile.txt
(79.97 KiB) Scaricato 182 volte
Ultima modifica di boh il lun 3 ott 2011, 0:41, modificato 1 volta in totale.
"Be yourself. Everyone else is already taken." ~ Oscar Wilde

Avatar utente
Ansa89
Iper Master
Iper Master
Messaggi: 2703
Iscritto il: mer 29 ago 2007, 17:57
Nome Cognome: Stefano Ansaloni
Slackware: 14.2 64bit
Kernel: 4.9.61
Desktop: XFCE 4.12
Località: Modena

Re: Problema con Makefile

Messaggio da Ansa89 »

Qual'è il target che dovresti aggiungere?

Avatar utente
boh
Linux 4.x
Linux 4.x
Messaggi: 1027
Iscritto il: ven 16 set 2005, 0:00
Slackware: 14.2 (x64)
Kernel: 4.4.111
Desktop: KDE 4.14.32
Località: Milano
Contatta:

Re: Problema con Makefile

Messaggio 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.
"Be yourself. Everyone else is already taken." ~ Oscar Wilde

Avatar utente
fgcl2k
Linux 1.x
Linux 1.x
Messaggi: 137
Iscritto il: gio 29 ott 2009, 10:14
Nome Cognome: Federico
Slackware: 14.1 (64bit)
Kernel: 3.10.17
Desktop: KDE 4.13.3

Re: Problema con Makefile

Messaggio 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.

Avatar utente
boh
Linux 4.x
Linux 4.x
Messaggi: 1027
Iscritto il: ven 16 set 2005, 0:00
Slackware: 14.2 (x64)
Kernel: 4.4.111
Desktop: KDE 4.14.32
Località: Milano
Contatta:

Re: Problema con Makefile

Messaggio 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?
"Be yourself. Everyone else is already taken." ~ Oscar Wilde

Avatar utente
414N
Iper Master
Iper Master
Messaggi: 2922
Iscritto il: mer 13 feb 2008, 16:19
Slackware: 15.0
Kernel: 5.15.19
Desktop: KDE5
Località: Bulagna
Contatta:

Re: Problema con Makefile

Messaggio 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.

Avatar utente
boh
Linux 4.x
Linux 4.x
Messaggi: 1027
Iscritto il: ven 16 set 2005, 0:00
Slackware: 14.2 (x64)
Kernel: 4.4.111
Desktop: KDE 4.14.32
Località: Milano
Contatta:

Re: Problema con Makefile

Messaggio da boh »

Con configure tutto si è risolto! :D
Un grazie anche a 414N per la risposta; per quanto riguarda gli header, proverò a toglierli ;)
"Be yourself. Everyone else is already taken." ~ Oscar Wilde

Avatar utente
fgcl2k
Linux 1.x
Linux 1.x
Messaggi: 137
Iscritto il: gio 29 ott 2009, 10:14
Nome Cognome: Federico
Slackware: 14.1 (64bit)
Kernel: 3.10.17
Desktop: KDE 4.13.3

Re: Problema con Makefile

Messaggio 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.

Rispondi