Problema compilazione su mac

di il
6 risposte

Problema compilazione su mac

Ciao a tutti!
Per un esame di reti dovrei implementare il gioco del tris: 2 client si connettono ad un server per giocare.
Ora il mio problema non sta tanto nello scrivere il codice quanto nel compilarlo. Il nostro professore ci ha fornito gran parte del codice e a noi basta scrivere solo client e server. Ci ha fornito inoltre il makefile per la compilazione. Io ho cambiato leggermente il makefile per aggiungere altri file alla compilazione e sulla mia distribuzione linux(fedora 17) funziona alla perfezione. La stessa cosa non si può dire invece su mac dove la compilazione genera 2 warning. Non vengono generati gli eseguibili.
Posto la risposta della compilazione

gcc -c error.c
error.c:108:17: warning: format string is not a string literal
      (potentially insecure) [-Wformat-security]
                syslog(level, buf);
                              ^~~
1 warning generated.
gcc -c my_io.c
gcc -c my_signal.c
gcc -c tris.c
gcc    -c -o trisClient.o trisClient.c
trisClient.c:3:1: warning: type specifier missing, defaults to 'int'
      [-Wimplicit-int]
main(int argc, char *argv[]){    //2 argomenti 2-ip 
^~~~
1 warning generated.
gcc -o trisClient trisClient.o error.o my_io.o tris.o basic.h
clang: error: cannot specify -o when generating multiple output files
make: *** [trisClient] Error 1


il secondo warning non è un problema(massa mettere nel codice int main invece che main)
il primo invece non l ho capito
ma credo che il problema vero e proprio sia la parte che dice "cannot specify -o ohe generating multiple output files". Ma non è vero che ho più file in out; ho solo più file in input!
voi sapete darmi una spiegazione?
posto anche il makefile

PROGS = error.o my_io.o my_signal.o tris.o trisClient trisServer 
CC = gcc
CLEANFILES = error.o my_io.o my_signal.o tris.o trisServer.o trisClient.o


all: ${PROGS}

error.o: error.c basic.h
	${CC} -c error.c

my_io.o:  my_io.c basic.h
	${CC} -c my_io.c

my_signal.o:  my_signal.c my_signal.h basic.h
	${CC} -c my_signal.c

tris.o: tris.c basic.h
	${CC} -c tris.c
	
trisClient: trisClient.o error.o my_io.o tris.o basic.h
	${CC} -o $@ $^

trisServer: trisServer.o my_signal.o error.o my_io.o tris.o basic.h
	${CC} -o $@ $^
	
clean:
	rm -f ${CLEANFILES}
	rm -f ${PROGS}
	rm -f *.*~	
	rm -f *~
avrei voluto allegare tutto il codice ma non trovo l'opzione per farlo...

6 Risposte

  • Re: Problema compilazione su mac

    Se qualcuno ha voglia di vedere il codice posto il link alla cartella dropbox:
    https://www.dropbox.com/sh/sp328flixp5l7r4/vjr9xvCTU
  • Re: Problema compilazione su mac

    gcc -o trisClient trisClient.o error.o my_io.o tris.o basic.h
    clang: error: cannot specify -o when generating multiple output files
    verifica di avere i files .o (trisClient.o error.o my_io.o tris.o) se ce li hai tutti allora la fase di compilazione è stata superata e hai un problema in fase di linkaggio.
    Prova a lanciare manualmente (basic.h non dovrebbe trovarsi nella lista dei .o - prova a rivedere in caso il Makefile)
    gcc -o trisClient trisClient.o error.o my_io.o tris.o
  • Re: Problema compilazione su mac

    No in effetti non genera trisServer.o. Però trisClient.o c'è...
    Non so come modificare il makefile! Ho fatto qualche prova ma non mi riesce di farlo funzionare.
    Mi potresti postare come lo modificheresti tu?
  • Re: Problema compilazione su mac

    Quale comando lanci? forse:
    make trisClient
    se è così allora trisServer.o non ti verrà generato.

    Il comando per generare trisClient dovrebbe essere (secondo me)
    trisClient: trisClient.o error.o my_io.o tris.o
       ${CC} -o $@ $^
    senza basic.h che non serve a niente in fase di linking.
  • Re: Problema compilazione su mac

    No io lancio solo make per compilare tutto
  • Re: Problema compilazione su mac

    Hai provato a lanciare manualmente il comando qui sotto?
    gcc -o trisClient trisClient.o error.o my_io.o tris.o
Devi accedere o registrarti per scrivere nel forum
6 risposte