Grazie per la risposta
Capito! I file *.c diventano tutti... Potremmo definirli "librerie" (?) che vengono tutti insieme usati da un unico file: il linker, l'eseguibile...Originariamente inviato da Yojimbo
i file scritti in C/C++ vengono compilato in 2 passaggi, raramente o solo per piccole applicazioni passano direttamene a codice eseguile ( nel caso di un solo file di codice, cose del tipo "hello world" o "lista puntata"). in tutti gli altri casi ogni sorgente viene ompilato in un file di codie oggetto, asembler in cui i collegamenti con le altre librerie ( che generalizzando nn sono altro che archivi di file oggetto ) non sono un vero e propio inidirizzo di memoria da cui andare a chiamare la funzione ma contiene il suo nome. nella fase di linkage i nomi vengono risolti direttamente tra i file oggetto che unirai in un solo file mentre gli altri dipende dal sistema utilizzato dal SO per gestire gli inidirizzi delle funzioni ( detti simboli ) per esempio ELF, Mach-O ,COM e altri, sono i formati in cui il codice assembler e salvato in un file. per unire questi file io uso ld, o anche gcc (es. gcc main.o external_func.o -o a.out ) o se vuoi anche libtool. ld è il linker e nelle pagine man trovi tuta la documentazione che ti può servire.
Mi sto leggendo il man di ld...
Che cambia tra creare il linker con ld o col gcc?
Per creare un linker col gcc basta che faccio: `gcc oggetto1.o oggetto2.o oggettoN.o -o eseguibile` una volta che ho compilato "oggetto1.c", "oggetto2.c" e "oggettoN.c", giusto?
e "oggetto1.o", "oggetto2.o" e "oggettoN.o" come li creo?
Se in "oggetto2.c" uso una funzione definita in "oggetto1.c" ricevo un errore di compilazione nel fare `gcc -o oggetto2.o oggetto2.c`, o sbaglio?
Ho guardato l'output su shell di un Makefile, ho visto che l'ultimo output crea il linker, ma negli output precedenti non fa capire in nessun modo che quel file usa una funzione non sua... :master:
Devo forse passare al gcc un opzione che non fa restituire errori "undefined function"?
Ok... Cercherò un pò qualhe tutorial semplice su google...di tutorial sui make file non ne ho mai trovati in italiano e non penso debba consigliartene uno in inglese, ce ne sono un'infinità.per quanto riguarda i configure, non saprei dirti [/B]
Ma i Makefile e i configure vanno fatti a manina come il codice c?
Ho visto che i configure sono scritti in shellscript e normalmente superano le 5000 righe...
Aiuto![]()