Κατανόηση της εντολής Unix και Linux: make
Το βοηθητικό πρόγραμμα make καθορίζει αυτόματα ποια κομμάτια ενός μεγάλου προγράμματος πρέπει να μεταγλωττιστούν ξανά και εκδίδει τις εντολές για την εκ νέου μεταγλώττιση τους. Το εγχειρίδιο περιγράφει την υλοποίηση του make GNU, η οποία γράφτηκε από τους Richard Stallman και Roland McGrath.
Το βοηθητικό πρόγραμμα make δεν περιορίζεται σε προγράμματα. Μπορείτε να το χρησιμοποιήσετε για να περιγράψετε οποιαδήποτε εργασία όπου ορισμένα αρχεία πρέπει να ενημερώνονται αυτόματα από άλλα όποτε αλλάζουν τα άλλα. Η εντολή make χρησιμοποιείται πιο συχνά σε μια κοινή διαδικασία για τη δημιουργία λογισμικού από τον πηγαίο κώδικα.

Πώς να χρησιμοποιήσετε την εντολή Make στο Linux
Αυτό είναι ένα συνηθισμένο παράδειγμα του τρόπου χρήσης της εντολής make στο Linux. Συνήθως, είναι μέρος μιας απλής διαδικασίας τριών βημάτων για τη δημιουργία εφαρμογών ανοιχτού κώδικα από τον πηγαίο κώδικα τους.
Αυτά τα παραδείγματα δείχνουν Προγράμματα C αφού αυτά είναι τα πιο συνηθισμένα, αλλά μπορείτε να χρησιμοποιήσετε το make με οποιαδήποτε γλώσσα προγραμματισμού που μπορεί να εκτελέσει τον μεταγλωττιστή του με μια εντολή κελύφους.
-
Εγκαταστήστε το Git, εάν δεν το έχετε, μαζί με τα εργαλεία δημιουργίας λογισμικού.
apt install git build-essential
-
Επιλέξτε μια εφαρμογή για να εργαστείτε ή κάντε λήψη του VLC.
apt build-dep vlc
-
Κλωνοποιήστε τον πηγαίο κώδικα VLC.
git κλώνος https://github.com/videolan/vlc.git
-
Αλλάξτε τους καταλόγους στον κλωνοποιημένο πηγαίο κώδικα VLC και εκτελέστε το σενάριο διαμόρφωσης.
cd vlc
./bootstrap
./Διαμορφώστε -
Εκτελέστε το φτιαχνω, κανω εντολή μαζί με το -j σημαία, ακολουθούμενη από τον αριθμό των πυρήνων/νημάτων της CPU που έχει το σύστημά σας.
make -j4
-
Θα χρειαστεί λίγος χρόνος για να ολοκληρωθεί. Όταν ολοκληρωθεί, εγκαταστήστε την εφαρμογή με κάντε εγκατάσταση.
sudo make install
Τελειώσατε.
Τις περισσότερες φορές, έτσι θα δείτε να χρησιμοποιείται η εντολή make. Μπορεί να υπάρχουν πιο περίπλοκες διαδικασίες από αυτήν ή μικρές παραλλαγές, αλλά ποτέ δεν είναι πολύ περίπλοκο.
Πώς λειτουργεί η εντολή GNU Make Command;
Η παρακάτω ενότητα είναι μια τεχνική ανάλυση της εντολής make. Αν θέλετε να αξιοποιήσετε στο έπακρο την αξιοποίηση, ανατρέξτε στις παρακάτω επιλογές.
Αυτή η σελίδα είναι ένα απόσπασμα της τεκμηρίωσης του GNU make. Ενημερώνεται μόνο περιστασιακά επειδή το έργο GNU δεν χρησιμοποιεί nroff. Για πλήρη, τρέχουσα τεκμηρίωση, ανατρέξτε στο αρχείο πληροφοριών make.info που δημιουργείται από το αρχείο πηγής Texinfo make.texinfo.
Σύνταξη και προετοιμασία του βοηθητικού προγράμματος make
Η σύνταξη του βοηθητικού προγράμματος make είναι φτιαχνω, κανω [ -φάmakefile ] [ επιλογή ]... στόχος...
Για να προετοιμαστείτε να χρησιμοποιήσετε το make, πρέπει να γράψετε ένα αρχείο που ονομάζεται το makefile που περιγράφει τις σχέσεις μεταξύ των αρχείων στο πρόγραμμά σας και αναφέρει τις εντολές για την ενημέρωση κάθε αρχείου. Τυπικά, ένα εκτελέσιμο αρχείο ενημερώνεται από αρχεία αντικειμένων, τα οποία, με τη σειρά τους, δημιουργούνται με τη μεταγλώττιση αρχείων πηγής.
Από τη στιγμή που υπάρχει ένα κατάλληλο makefile, κάθε φορά που αλλάζετε ορισμένα αρχεία προέλευσης, η εντολή κελύφους φτιαχνω, κανω αρκεί για να εκτελέσει όλες τις απαραίτητες εκ νέου μεταγλωττίσεις. Το πρόγραμμα make χρησιμοποιεί τη βάση δεδομένων makefile και τους χρόνους τελευταίας τροποποίησης των αρχείων για να αποφασίσει ποια αρχεία πρέπει να ενημερωθούν. Για καθένα από αυτά τα αρχεία, εκδίδει τις εντολές που καταγράφονται στη βάση δεδομένων.
Το βοηθητικό πρόγραμμα make εκτελεί εντολές στο makefile για να ενημερώσει ένα ή περισσότερα ονόματα στόχων, όπου όνομα είναι συνήθως ένα πρόγραμμα. Εάν όχι -φά η επιλογή είναι παρούσα, κάντε αναζητήσεις για τα makefiles GNUmakefile, makefile, και Makefile, με αυτή τη σειρά.
Κανονικά θα πρέπει να καλέσετε και το makefile makefile ή Makefile. (Συνιστάται να χρησιμοποιήσετε το Makefile επειδή εμφανίζεται ευδιάκριτα κοντά στην αρχή μιας λίστας καταλόγου, κοντά σε άλλα σημαντικά αρχεία όπως το README.) Το πρώτο όνομα-ελεγμένο, το GNUmakefile, δεν συνιστάται για τους περισσότερους makefiles. Χρησιμοποιήστε αυτό το όνομα μόνο εάν ένα makefile είναι συγκεκριμένο για το GNU make και δεν θα γίνει κατανοητό από άλλες εκδόσεις του make. Αν το makefile είναι -, διαβάζεται η τυπική είσοδος.
ο φτιαχνω, κανω Το βοηθητικό πρόγραμμα ενημερώνει έναν στόχο εάν εξαρτάται από προαπαιτούμενα αρχεία που έχουν τροποποιηθεί από την τελευταία τροποποίηση του στόχου ή εάν ο στόχος δεν υπάρχει.
Επιλογές για το βοηθητικό πρόγραμμα Make
ο -σι και -Μ Οι επιλογές αγνοούνται για συμβατότητα με άλλες εκδόσεις της μάρκας.
-Γ σκην αλλάζει σε καταλόγου σκην πριν διαβάσετε τα makefiles ή κάνετε οτιδήποτε άλλο. Αν πολλαπλές -ΝΤΟ καθορίζονται επιλογές, καθεμία ερμηνεύεται σε σχέση με την προηγούμενη: -ΝΤΟ / -Γ κλπ είναι ισοδύναμο με -C / etc. Αυτό χρησιμοποιείται συνήθως με αναδρομικές επικλήσεις της μάρκας.
ο -ρε Η επιλογή εκτυπώνει πληροφορίες εντοπισμού σφαλμάτων εκτός από την κανονική επεξεργασία. Οι πληροφορίες εντοπισμού σφαλμάτων λένε ποια αρχεία εξετάζονται για επαναδημιουργία, ποιοι χρόνοι αρχείων συγκρίνονται και με ποια αποτελέσματα, ποια αρχεία πρέπει να ξαναδημιουργηθούν και ποιοι σιωπηροί κανόνες λαμβάνονται υπόψη και ποιοι εφαρμοσμένος.
ο -μι Η επιλογή δίνει στις μεταβλητές που λαμβάνονται από το περιβάλλον προτεραιότητα έναντι των μεταβλητών από τα makefiles.
ο -φά αρχείοχρήσεις επιλογής αρχείο ως makefile.
ο -Εγώ Η επιλογή αγνοεί όλα τα σφάλματα στις εντολές που εκτελούνται για την επαναδημιουργία αρχείων.
ο -ΕΓΩ σκηνΗ επιλογή καθορίζει έναν κατάλογο σκην για να αναζητήσετε τα συμπεριλαμβανόμενα αρχεία. Εάν πολλά -Εγώ Οι επιλογές χρησιμοποιούνται για τον καθορισμό πολλών καταλόγων, η αναζήτηση των καταλόγων γίνεται με την καθορισμένη σειρά. Σε αντίθεση με τα επιχειρήματα σε άλλες σημαίες της μάρκας, καταλόγους με -ΕΓΩ Οι σημαίες μπορεί να έρχονται αμέσως μετά τη σημαία: -Ιδίρ επιτρέπεται, καθώς και -Σκην. Αυτή η σύνταξη επιτρέπεται για συμβατότητα με τον προεπεξεργαστή C -ΕΓΩ σημαία.
ο -j δουλειές η επιλογή καθορίζει το αριθμός θέσεων εργασίας (εντολές) να τρέχουν ταυτόχρονα. Εάν υπάρχουν περισσότερες από μία -j επιλογή, η τελευταία είναι αποτελεσματική. Αν το -j Η επιλογή δίνεται χωρίς όρισμα, το make δεν περιορίζει τον αριθμό των εργασιών που εκτελούνται ταυτόχρονα.
ο -κ Η επιλογή συνεχίζεται όσο το δυνατόν περισσότερο μετά από ένα σφάλμα. Ο στόχος που απέτυχε, και αυτοί που εξαρτώνται από αυτόν, δεν μπορούν να ξαναφτιάξουν. Ωστόσο, οι άλλες εξαρτήσεις αυτών των στόχων μπορούν να υποβληθούν σε επεξεργασία με τον ίδιο τρόπο.
ο -μεγάλο και - φορτώνω Οι επιλογές καθορίζουν ότι δεν πρέπει να ξεκινούν νέες εργασίες (εντολές) εάν υπάρχουν άλλες εργασίες που εκτελούνται και ο μέσος όρος φορτίου είναι τουλάχιστον φορτώνω (αριθμός κινητής υποδιαστολής). Χωρίς όρισμα, καταργεί ένα προηγούμενο όριο φόρτωσης.
ο -n Η επιλογή εκτυπώνει τις εντολές που θα εκτελούνταν, αλλά δεν τις εκτελεί.
ο -ο αρχείοη επιλογή δεν επαναφέρει το αρχείο ακόμα κι αν είναι παλαιότερο από τις εξαρτήσεις του και δεν ανασκευάζει τίποτα λόγω αλλαγών στοαρχείο. Ουσιαστικά το αρχείο αντιμετωπίζεται ως παλιό και οι κανόνες του αγνοούνται.
ο -Π Η επιλογή εκτυπώνει τη βάση δεδομένων (κανόνες και τιμές μεταβλητών) που προκύπτει από την ανάγνωση των makefiles. Στη συνέχεια εκτελείται ως συνήθως ή όπως ορίζεται διαφορετικά. Αυτό εκτυπώνει επίσης τις πληροφορίες έκδοσης που δίνονται από το -v διακόπτης (δείτε παρακάτω). Για να εκτυπώσετε τη βάση δεδομένων χωρίς να προσπαθήσετε να δημιουργήσετε ξανά αρχεία, χρησιμοποιήστε το φτιαχνω, κανω-Π-f/dev/null.
ο -q Η επιλογή ορίζει τη λειτουργία ερώτησης. Δεν εκτελεί εντολές ούτε εκτυπώνει τίποτα. Επιστρέφει μια κατάσταση εξόδου που είναι μηδενική εάν οι καθορισμένοι στόχοι είναι ενημερωμένοι, μη μηδενική διαφορετικά.
ο -r Η επιλογή εξαλείφει τη χρήση των ενσωματωμένων σιωπηρών κανόνων. Διαγράφει επίσης την προεπιλεγμένη λίστα επιθημάτων για κανόνες επιθημάτων.
ο -μικρό η επιλογή θέτει σε σίγαση τη λειτουργία. Δεν εκτυπώνει τις εντολές καθώς εκτελούνται.
ο -ΜΙΚΡΟ η επιλογή ακυρώνει την επίδραση του -κ επιλογή. Αυτό δεν είναι απαραίτητο παρά μόνο σε ένα αναδρομικό makewhere -κ μπορεί να κληρονομηθεί από τη μάρκα ανώτατου επιπέδου μέσω MAKEFLAGS ή εάν ορίσετε -κ στο MAKEFLAGS στο περιβάλλον σας.
ο -τ Η επιλογή αγγίζει τα αρχεία (τα επισημαίνει ενημερωμένα χωρίς να τα αλλάζει) αντί να εκτελούνται οι εντολές τους. Αυτό χρησιμοποιείται για να προσποιηθεί ότι οι εντολές έγιναν, για να ξεγελαστούν οι μελλοντικές επικλήσεις του make.
ο -v Η επιλογή εκτυπώνει την έκδοση του προγράμματος δημιουργίας συν τα πνευματικά δικαιώματα, μια λίστα δημιουργών και μια ειδοποίηση ότι δεν υπάρχει εγγύηση.
ο -w Η επιλογή εκτυπώνει ένα μήνυμα που περιέχει τον κατάλογο εργασίας πριν και μετά από άλλη επεξεργασία. Αυτό μπορεί να είναι χρήσιμο για την εύρεση σφαλμάτων από περίπλοκες φωλιές αναδρομικών εντολών.
ο - Δ αρχείο επιλογή προσποιείται ότι ο στόχοςαρχείοέχει τροποποιηθεί. Όταν χρησιμοποιείται με το -n σημαίας, αυτό σας δείχνει τι θα συνέβαινε αν τροποποιούσατε αυτό το αρχείο. Χωρίς -n, είναι σχεδόν το ίδιο με το να τρέχεις α αφή εντολή στο δεδομένο αρχείο πριν από την εκτέλεση του make, με τη διαφορά ότι ο χρόνος τροποποίησης αλλάζει μόνο κατά τη φαντασία του make.