Newsgroup: it.comp.os.linux.development
Titolo: Compilare da piu' sorgenti...

In attesa che mi arrivi APUE, mi potreste togliere questo dubbietto?
Se ho piu' file sorgenti, ad es main.c pippo1.c pippo2.c ed un header
pippo.h, e voglio creare un unico eseguibile che sfrutti le definizioni dei
tre files, come devo fare?
Ho provato a scopiazzare qualche makefile ma il tutto fuziona finche' ho due
sorgenti soli, quando il numero aumenta non c'e' nulla da fare (per me:=(( )
Alternativamente mi saperteste dare qualche link?
Ho cercato ma senza molto successo...
grazie a tutti e grazie...
Vi][oZ
-- 
          We are the true believers
       It's our turn to show the world
 In the fire of heavy metal we were burned
         It's more than our religion
          It's the only way to live
           But the enemies of metal
              We can't forgive

 sorgenti soli, quando il numero aumenta non c'e' nulla da fare (per
e:=(( )
Devi usare Make!!!
Non c'è ragione che ti debba funzionare solo con due sorgenti, probabilmente
nelle righe del tuo
Makefile successive alla seconda chiamata di GCC, hai fatto qualche errore
di sintassi.
Diciamo le cose come stanno: la sintassi di make è proprio stupida.
TAB e SPAZI non sono la stessa cosa.
In generale bisogna SEMPRE!!! METTERE UNA TABULAZIONE ALL'INIZIO DI UN
COMANDO (gcc .....)
(NON SPAZI) E MAI!!! INIZIARE CON UNA TABULAZIONE TUTTE LE ALTRE RIGHE!!!!
Ciao.



sorgenti soli, quando il numero aumenta non c'e' nulla da fare (per me:=(( )
CC=gcc
CFLAGS=-O -Wall
OBJS=main.o pippo1.o pippo2.o
#l'eseguibile si chiama 'main'
main: $(OBJS)
        $(CC) -o main $(OBJS)
 
main.o: main.c pippo.h
        $(CC) -o main.o -c main.c $(CFLAGS)
pippo1.o: pippo1.c pippo.h
        $(CC) -o pippo1.o -c pippo1.c $(CFLAGS)
 
pippo2.o: pippo2.c pippo.h
        $(CC) -o pippo2.o -c pippo2.c $(CFLAGS)
-- 
Lorenzo
"Given enough eyeballs, all bugs are shallow", Linus'Law
(address rot13 encoded)

         $(CC) -o pippo2.o -c pippo2.c $(CFLAGS)
Ancora piu' semplice:
CC=gcc
CFLAGS=-O
main: main.o pippo1.o pippo2.o
main.o: main.c
pippo1.o: pippo1.c 
pippo2.o: pippo2.c 
... ci sono le regole implicite...
-- 
Francesco P. Lovergine  f.lovergine AT 
iesi.ba.cnr.it

... ci sono le regole implicite...
Anche -Wall e` implicito?


Ciao f.lov...@REMOVETHIS.iesi.ba.cnr.,
Martedi` 27 Giugno 2000 alle 12:29, f.lov...@REMOVETHIS.iesi.ba.cnr. scrisse
a All riguardo < Re: Compilare da piu' sorgenti... >:
 >> CC=gcc
 >> CFLAGS=-O -Wall
 >> OBJS=main.o pippo1.o pippo2.o
[..]
 >> main.o: main.c pippo.h
 >> $(CC) -o main.o -c main.c $(CFLAGS)
[..]
 fl> Ancora piu' semplice:
 fl> CC=gcc
 fl> CFLAGS=-O
[..]
 fl> main.o: main.c
Scusa, ma in questo caso se non sbaglio main.c viene ricompilato solo se main.o
e' piu' vecchio o non esiste, mentre nel post a cui rispondevi veniva
ricompilato anche quando cambia l'header file incluso pippo.h
 fl> ... ci sono le regole implicite...
eh ma non mi pare che make vada a guardare i .h inclusi
Ciao,
FC
FidoWEB -> 
http://bbs.romacivica.net/fido

 (address rot13 encoded)
-- 


  fl> Ancora piu' semplice:




main.o: main.c pippo.h
le regole implicinte ci sono anche per quel suffisso.
Avevo lasciato come esercizio per il lettore la dipendenza dagli header :-)
Comunque la cosa funziona decentemente solo con GNU make, quello
di SUN ad esempio funziona a meta' in certi casi...
