Δημοσιεύτηκε: 31 Μάιος 2011, 01:41
Star_Light έγραψε:απλα θελω να δω πως καταφερε να τρεξει το προγραμμα ..... επειδη πιο πολυ με ενδιαφερει η εκμαθηση
αλλιως θα το ειχα κανει με πολυ απλουστερο τροπο...
Ο κώδικας είναι και στο https://github.com/simos/starlight
Για την εκτέλεση, https://github.com/simos/starlight/blob/master/Makefile
- Κώδικας: Επιλογή όλων
gcc -c module.c -o module.o
gcc prog.c module.o -o prog
δηλαδή, μεταγλωττίζουμε το module.c σε object μόνο! (παράμετρος -c).
και μετά
μεταγλωττίζουμε το prog.c με το module.o για να φτιάξουμε το prog
Το παραπάνω Makefile είναι πολύ απλό και θα μπορούσε να γίνει καλύτερο.
Για παράδειγμα, το
- Κώδικας: Επιλογή όλων
module.o: module.c module.h
gcc -c module.c -o module.o
λέει ότι για να φτιάξουμε το module.o, πρέπει να προϋπάρχουν τα module.c και module.c. Αν η ημερομηνία τους είναι νεότερη από του module.o, τότε αν τρέξουμε 'make' θα εκτελεστεί η εντολή μεταγλώττισης ξανά. Η εντολή είναι στη δεύτερη γραμμή.
Είναι κακή πρακτική να κάνεις include άλλα αρχεία C.
Αυτό που κάνεις είναι μεταγλωττίζεις τα επιμέρους αρχεία σε .o και μετά τα κάνεις link. Στο παράδειγμα δεν το δείχνω, ωστόσο ο τρόπος μου είναι μια ικανοποιητική αρχή.