Το GNU Make Book - Απομυθοποιώντας το Linux Build Automation

Εκτός από το να γράφω για το Linux και να γράφω κριτικές και tutorials σχετικά με τις διανομές και τα εργαλεία, είμαι επίσης πολύ εμπλεκόμενος στην ανάπτυξη λογισμικού. Δυστυχώς, το 99,9% αυτής της ανάπτυξης λογισμικού λαμβάνει χώρα στην πλατφόρμα των Windows.

Έχω πάνω από 20 χρόνια εμπειρίας ως προγραμματιστής C ++, Visual Basic, VB.NET και C # και είμαι επίσης ένα χέρι με το SQL Server τόσο ως DBA όσο και ως προγραμματιστής.

Αυτό που δεν είμαι τόσο καλός στην ανάπτυξη λογισμικού για το Linux. Είναι κάτι που δεν έχω πραγματικά ενοχλήσει ποτέ. Ο κύριος λόγος είναι ότι μετά την ανάπτυξη λογισμικού κατά τη διάρκεια της ημέρας το τελευταίο πράγμα που θέλω να κάνω είναι να καθίσετε γύρω από μια βραδιά γράφοντας περισσότερο λογισμικό.

Προφανώς, μου αρέσει να τραγουδάω με scripting και να γράφω το περίεργο μικρό πρόγραμμα. Αυτά είναι συνήθως για έργα ηλεκτρονικής που βασίζονται στο Raspberry PI .

Ένα πράγμα που πολλοί προγραμματιστές στην πλατφόρμα των Windows θα έχουν προβλήματα με την πρώτη μετακίνηση στο Linux είναι να μάθουν για τα εργαλεία που απαιτούνται για την κατασκευή και συσκευασία εφαρμογών.

Ο πιο εύκολος τύπος εφαρμογής που αναπτύσσονται είναι οι εφαρμογές ιστού, επειδή γενικά δεν απαιτούν compiled κώδικα (PHP, Perl, Python) και τα αρχεία αναπτύσσονται σε μια καθορισμένη θέση στο διακομιστή ιστού.

Ένας μεγάλος αριθμός εφαρμογών που έχουν κατασκευαστεί για το Linux αναπτύσσονται χρησιμοποιώντας C, C ++ ή Python. Η σύνταξη ενός μόνο προγράμματος C είναι σχετικά εύκολη, αλλά όταν χρειάζεται να συντάξετε μια σειρά προγραμμάτων C με πολλαπλές εξαρτήσεις τα πράγματα είναι λίγο πιο δύσκολα.

Το GNU Make είναι ένα εργαλείο δημιουργίας αυτοματοποιημένων scripting το οποίο σας βοηθά να μεταγλωττίσετε τις εφαρμογές σας ξανά και ξανά και με διαφορετικούς τρόπους. Για παράδειγμα, μπορείτε να δώσετε μια παράμετρο η οποία, ανάλογα με την τιμή, θα μεταγλωττίσει μια εφαρμογή χρησιμοποιώντας 64-bit ή 32-bit.

Το GNU Make βιβλίο έχει γραφτεί από τον John Graham-Cumming για να βοηθήσει τους χρήστες του GNU Make να πάρουν πιο σταθερή λαβή για τις πολυπλοκότητες που σχετίζονται με το GNU Make.

Το βιβλίο χωρίζεται σε έξι κεφάλαια:

  1. Τα Βασικά Ανανεωμένα
  2. Δημιουργία σφαλμάτων Makefile
  3. Κατασκευή και ανακατασκευή
  4. Παγίδες και Προβλήματα
  5. Πιέζοντας τον φάκελο
  6. Η GNU Make Standard Library

Δεν πιστεύω ότι το βιβλίο απευθύνεται σε αρχάριους, επειδή δεν διαθέτει ορισμένες διευκρινίσεις που θα περιμένατε όταν μάθετε ένα νέο θέμα όπως "Τι είναι το GNU Make?", "Πώς μπορώ να δημιουργήσω ένα αρχείο"; "Γιατί χρησιμοποιεί το "Κάνετε καλύτερα από την κατάρτιση κάθε προγράμματος ένα προς ένα;" και "Πώς μπορώ να μεταγλωττίσω προγράμματα χρησιμοποιώντας το GNU Make?". Όλες αυτές οι θεματικές ενότητες καλύπτονται από το GNU Make manual .

Το γεγονός ότι το πρώτο κεφάλαιο ονομάζεται "Τα Βασικά Αναθεωρημένα" σε αντίθεση με τα "Τα Βασικά" δείχνει σαφώς ότι αναμένεται να έχετε μια γείωση στο θέμα πριν ξεκινήσετε.

Το πρώτο κεφάλαιο καλύπτει όλα τα βασικά στοιχεία όπως τη χρήση μεταβλητών, περιβάλλοντα που χρησιμοποιούνται από τις εντολές και το περιβάλλον $ (Shell). Καθώς το κεφάλαιο μετακινείται, εισάγετε το θέμα της σύγκρισης, των λιστών και των λειτουργιών που καθορίζονται από το χρήστη.

Εάν έχετε χρησιμοποιήσει το GNU Make για λίγο, αλλά δεν θεωρείτε τον εαυτό σας εμπειρογνώμονα, υπάρχουν μερικές ωραίες συμβουλές και συμβουλές που θα σας βοηθήσουν να καταλάβετε ορισμένες περιπλοκές που μπορεί να μην είναι άμεσα εμφανείς.

Το δεύτερο κεφάλαιο θα είναι θεϊκή προσφορά για όσους από εσάς προσπαθείτε να παγιδεύσετε λάθη στη δημιουργία σεναρίων. Η ενότητα "Εκτέλεση εντοπισμού σφαλμάτων" είναι γεμάτη από άριστες συμβουλές και συμβουλές για την εκκαθάριση των παραδειγμάτων Makefiles και περιλαμβάνει ενότητες για την εκτύπωση μεταβλητών τιμών και ακόμη και την απόρριψη της τιμής κάθε μεταβλητής. Περαιτέρω στο κεφάλαιο, υπάρχει ένας οδηγός για το GNU Debugger που μπορείτε να χρησιμοποιήσετε για να προχωρήσετε σε δέσμες ενεργειών.

Το τρίτο κεφάλαιο περιλαμβάνει παράδειγμα makefiles αλλά περισσότερο από αυτό σας δείχνει πώς να δημιουργήσετε Makefiles που μπορείτε να εκτελέσετε ξανά και ξανά.

Οι "παγίδες και προβλήματα" εξετάζουν τις διαφορές μεταξύ ορισμένων όρων, όπως = και: =, και ifndef και? =.

Βρήκα καθώς προχώρησα περισσότερο από το βιβλίο ότι επειδή δεν προσπαθώ ενεργά να χρησιμοποιήσω το GNU Make και επειδή οι γνώσεις μου είναι σε πολύ βασικό επίπεδο, ένα μέρος του θέματος πήγε πολύ πάνω από το κεφάλι μου.

Μέχρι τη στιγμή που πήγα στο κεφάλαιο "Σπρώχνοντας το φάκελο" τα μάτια μου πήγαν λίγο πάνω.

Η κύρια περίληψη μου, αν έπρεπε να συνοψίσω αυτό το βιβλίο, είναι ότι ο συγγραφέας γνωρίζει σαφώς τα πράγματα του και έχει προσπαθήσει να μεταδώσει όσο το δυνατόν περισσότερες πληροφορίες.

Το πρόβλημα είναι ότι μερικές φορές όταν ένας εμπειρογνώμονας θέματος προσπαθεί να γράψει κάτι κάτω έχουν αυτό το "το εύκολο του, το μόνο που πρέπει να κάνετε είναι ..." η αύρα γι 'αυτούς.

Η καουτσούκ σφραγίδα στην πίσω πόρτα μου ήρθε την περασμένη εβδομάδα και, όπως είναι μόλις δύο ετών, κάλεσα την εταιρεία που την έβαλε καθώς εξακολουθεί να είναι εγγύηση.

Η κυρία στο τηλέφωνο είπε: "Ω ότι είναι εντάξει, θα σας στείλω μια νέα σφραγίδα".

Είπα: "Πρέπει να το εγκαταστήσω εγώ; Είναι κάτι που μπορώ να κάνω".

Η απάντηση ήταν "Σίγουρα μπορείτε, το μόνο που έχετε να κάνετε είναι να απομακρύνετε την πόρτα, να τοποθετήσετε τη σφραγίδα και να βάλετε ξανά την πόρτα".

Τώρα η στιγμιαία σκέψη μου ήταν "woah, επιστρέψτε λίγο εκεί, βγάλτε την πόρτα;!". Δεν είμαι ικανός να αφαιρέσω μια πόρτα, να τοποθετήσω μια σφραγίδα και να επανατοποθετώ την πόρτα. Το αφήνω αυτό στους ειδικούς.

Με αυτό το βιβλίο, αισθάνομαι ότι χρειάζεστε ένα άλλο βιβλίο και μια ορισμένη εμπειρία γράφοντας το Makefiles προτού να το βρείτε χρήσιμο.

Νομίζω ότι οι συμβουλές, οι συμβουλές και οι γνώσεις που παρέχονται θα βοηθούσαν μερικούς ανθρώπους να λένε "Ω, γι 'αυτό το κάνουμε αυτό" ή "δεν συνειδητοποίησα ότι θα μπορούσατε να το κάνετε έτσι".

Επομένως, η εκτίμησή μου είναι ότι θα πρέπει να αγοράσετε αυτό το βιβλίο εάν αναζητάτε διευκρινίσεις ή περισσότερες ενδιάμεσες ή προηγμένες γνώσεις σχετικά με το GNU Make, αλλά δεν είναι ένα βιβλίο για αρχάριους.