Re: Εγκατάσταση προγραμμάτων με μεταγλώττιση του πηγαίου κώδικα και... απεγκατάσταση!
Dimitrios Papadopoulos
chaosdynamics at googlemail.com
Thu Mar 20 09:44:38 GMT 2008
Kαλημέρα σε όλους,
επειδή όπως βλέπω έγινε αναφορά στο θέμα του compile από πηγαίο κώδικα με τη
χρήση του make, θα ήθελα να προσθέσω κι εγώ το λιθαράκι μου. Το configure
είναι ένα επίπεδο ψηλότερα από το make που δημιουργεί αρχεία Makefile,
ανάλογα με τις πληροφορίες που συλλέγει από το σύστημα σχετικά με compilers,
options που χρειάζονται κ.α., που θα χρησιμοποιηθούν από το make.
Eπειδή θεωρώ τη χρήση του make, απαραίτητη στη κοινότητα ανοιχτού λογισμικού
θα περιγράψω ένα παράδειγμα.
Ενα πολύ απλό Makefile φαινεται ως εξής:
COM=myexecutable
OBJ=main.o file1.o file2.o
CC=gcc
LDR=gcc
$(COM): $(OBJ)
$(LDR) -o $(COM) $(OBJ)
install: $(COM)
mv $(COM) $(HOME)/bin/$(COM)
chmod 755 $(HOME)/bin/$(COM)
clean:
rm -f core $(OBJ)
Μπορεί είτε να έχει δημιοργηθεί από το configure ή χειροκίνητα.
COM = myexecutable ορίζει το όνομα του εκτελέσιμου αρχείου.
OBJ=main.o file1.o file2.o είναι τα αντικειμενα (objects) που θα
δημιουργηθούν μετά το compile. Yποθέτω ότι ο πηγαίος κώδικας είναι γραμμένος
σε C, δηλαδή τα αντίστοιχα αρχεία είναι main.c, file1.c file2.c.
CC=gcc oρίζει το compiler και LDR=gcc ορίζει το linker.
$(COM): $(OBJ) λέει ότι το εκτελέσιμο εξαρτάται από τα αντικείμενα
Τωρα η ροη του make αλλάζει και εκτελει την εντολή gcc -c main.c file1.c
file2.c για να δημιουργήσει τα αντικείμενα.
Επειτα $(LDR) -o $(COM) $(OBJ) συνδέει (links) τα αντικείμενα στο
εκτελέσιμο.
Τωρα έχουμε το εκτελέσιμο μας στο φάκελο που εκτελέσαμε όλες αυτές τις
διεργασίες. Αν γράψουμε make install θα μετακινησει απλώς το εκτελέσιμό μας
στο φάκελο $(HOME)/bin/$(COM) και θα του αλλάξει δικαιώματα (permissions).
Δηλαδή δεν κάνει τίποτε συνταρακτικό το make install. To παρόν Makefile δεν
έχει uninstall, αλλά μπορεί να προστεθεί πολύ εύκολα
uninstall:
rm $(HOME)/bin/$(COM)
Aυτά για την ώρα,
Δημήτρης
-------------- next part --------------
An HTML attachment was scrubbed...
URL: https://lists.ubuntu.com/archives/ubuntu-gr/attachments/20080320/9bc5616c/attachment.htm
More information about the Ubuntu-gr
mailing list