03/08/16 8:00
Bonnox
Buongiorno ancora, mi spiace postare un sacco di domande ma non mi hanno mai preparato a dovere su questi argomenti...
volevo testare un semplice makefile, compilando un programma di 2 file (per stare sul semplice).
I file sono main.c , libreria.c, libreria.h e makefile. Sono tutti nella stessa cartella, diversa da quella del compilatore.
ho usato codeblocks per scriverli, e di suo gestisce automaticamente i programmi con più file. ho guardato il build log e i comandi erano come me li aspettavo dopo aver letto il libro di King.
Ho provato dunque a fare da me:
se vado nella cartella dei sorgenti e invoco mingw32-make (è nel path) mi da questo (non uso il tag code perchè ho visto che lo colora in un modo che non si capisce niente):
D:\Sviluppo\mingw\bin\gcc -c "D:\programmazione\cose C\testmake\hellomake.c" -o "D:\programmazione\cose C\testmake\hellomake.o"
D:\Sviluppo\mingw\bin\gcc -o "D:\programmazione\cose C\testmake\hellomake.o" "D:\programmazione\cose C\testmake\libreria.o"
/sviluppo/mingw/bin/../lib/gcc/mingw32/4.9.3/../../../…(main.o).text.startup+0xa0): undefined reference to `WinMain@16'
collect2.exe: error: ld returned 1 exit status
makefile:2: recipe for target 'hellomake' failed
mingw32-make: *** [hellomake] Error 1
parla di un winmain, ma io sto facendo una console application :S
poi provo a fare prima i singoli o e a metterli insieme... anche lì nessun risultato.
poi mi accorgo che il nome del primo target era diverso dai nomi del file main, così rinomino tutti i "main" nel file con "hellomake", per giungere al code che ho scritto, ma che comunque non funziona.
non riesco a capire dove sta l'errore...
EDIT: ho provato a mettere i percorsi assoluti anche sulle dipendenze, ma mi becco un bell'errore "multiple target patterns".
volevo testare un semplice makefile, compilando un programma di 2 file (per stare sul semplice).
I file sono main.c , libreria.c, libreria.h e makefile. Sono tutti nella stessa cartella, diversa da quella del compilatore.
#include <stdio.h> #include "libreria.h" int main() { mio(); return 0; }
#include "libreria.h" #include <stdio.h> void mio() { printf("ciao make!"); }
#ifndef LIBRERIA_H_INCLUDED #define LIBRERIA_H_INCLUDED void mio (); #endif // LIBRERIA_H_INCLUDED
ho usato codeblocks per scriverli, e di suo gestisce automaticamente i programmi con più file. ho guardato il build log e i comandi erano come me li aspettavo dopo aver letto il libro di King.
Ho provato dunque a fare da me:
hellomake: hellomake.o libreria.o D:\Sviluppo\mingw\bin\gcc -o "D:\programmazione\cose C\testmake\hellomake.o" "D:\programmazione\cose C\testmake\libreria.o" hellomake.o: hellomake.c libreria.h D:\Sviluppo\mingw\bin\gcc -c "D:\programmazione\cose C\testmake\hellomake.c" -o "D:\programmazione\cose C\testmake\hellomake.o" libreria.o: libreria.c libreria.h D:\Sviluppo\mingw\bin\gcc -c "D:\programmazione\cose C\testmake\libreria.c" -o "D:\programmazione\cose C\testmake\libreria.o"
se vado nella cartella dei sorgenti e invoco mingw32-make (è nel path) mi da questo (non uso il tag code perchè ho visto che lo colora in un modo che non si capisce niente):
D:\Sviluppo\mingw\bin\gcc -c "D:\programmazione\cose C\testmake\hellomake.c" -o "D:\programmazione\cose C\testmake\hellomake.o"
D:\Sviluppo\mingw\bin\gcc -o "D:\programmazione\cose C\testmake\hellomake.o" "D:\programmazione\cose C\testmake\libreria.o"
/sviluppo/mingw/bin/../lib/gcc/mingw32/4.9.3/../../../…(main.o).text.startup+0xa0): undefined reference to `WinMain@16'
collect2.exe: error: ld returned 1 exit status
makefile:2: recipe for target 'hellomake' failed
mingw32-make: *** [hellomake] Error 1
parla di un winmain, ma io sto facendo una console application :S
poi provo a fare prima i singoli o e a metterli insieme... anche lì nessun risultato.
poi mi accorgo che il nome del primo target era diverso dai nomi del file main, così rinomino tutti i "main" nel file con "hellomake", per giungere al code che ho scritto, ma che comunque non funziona.
non riesco a capire dove sta l'errore...
EDIT: ho provato a mettere i percorsi assoluti anche sulle dipendenze, ma mi becco un bell'errore "multiple target patterns".
Ultima modifica effettuata da Bonnox 03/08/16 8:32
aaa