Gentoo: Γιατί επέλεξα να συντάξω τα δικά μου προγράμματα;

Λοιπόν, δεδομένης της υπέροχης λήψης της προηγούμενης ανάρτησής μου, έρχομαι να σας πω λίγο περισσότερα για την αγαπημένη μου διανομή, το Gentoo Linux. Υπόσχομαι ότι αυτή η ανάρτηση θα έχει διασκεδαστικές πληροφορίες που θα σας βοηθήσουν να καταλάβετε λίγο για τους μύθους που προκύπτουν μπροστά από το φοβερό συλλογής λογισμικού. Υπόσχομαι επίσης ότι αυτές οι πληροφορίες θα είναι χρήσιμες για τον επόμενο οδηγό εγκατάστασης του Gentoo Linux σε ~ 20 βήματα (δεν τα έχω μετρήσει ακόμα, αλλά νομίζω ότι είναι ακόμη λιγότερο). Χωρίς άλλη παραλλαγή, ας ξεκινήσουμε:

Τι είναι η κατάρτιση;

Είναι η διαδικασία που πραγματοποιείται από ένα πρόγραμμα (συνήθως ονομάζεται μεταγλωττιστής) για τη μετατροπή κώδικα που είναι γραμμένο σε ανθρώπινη γλώσσα (αρχεία C, C ++, κ.λπ.) σε κώδικα που μπορεί να γίνει κατανοητό από ένα μηχάνημα (δυαδικός κώδικας). Ας δούμε το ακόλουθο παράδειγμα:

Το δικό του σχέδιο, Christopher Díaz Riveros

Αυτό είναι το μικρό μας πρόγραμμα C (αν θέλετε άλλα μαθήματα C αργότερα, θα χαρώ να σας δείξω πόσο λίγα έχω μάθει και αυτή τη στιγμή). Τώρα ας δούμε πώς φαίνεται η έξοδος μετά τη σύνταξη.

Το δικό του σχέδιο, Chrirstopher Díaz Riveros

Όμορφο, έτσι δεν είναι;  Αυτό καταλαβαίνει το μηχάνημά μας για να μπορεί να γράφει αυτό το μικρό «Hello» στο τερματικό μας κάθε φορά που εκτελείται το πρόγραμμα.

Η διαδικασία κατασκευής:

Καθώς είναι άχρηστο να έχουμε ένα πρόγραμμα που εκτυπώνει ένα απλό "Hello" στην οθόνη, καθώς τα αρχεία .c και .h είναι άφθονα σε έργα (όπως σε όλες τις γλώσσες προγραμματισμού). Προκειμένου να γίνει η διαδικασία σύνταξης λίγο πιο εύκολη, εμφανίστηκαν νέα εργαλεία, το πιο αντιπροσωπευτικό από όλα είναι η εντολή κάνω.

Make πάρτε ένα αρχείο Makefile ως σημείο εκκίνησης και συγκεντρώνει ό, τι είναι απαραίτητο για τη δημιουργία του τελικού εκτελέσιμου, σε ορισμένες περιπτώσεις αυτό το βήμα απαιτεί την εκτέλεση ενός αρχείου που ονομάζεται configure για να μπορέσετε να εκχωρήσετε μερικές μεταβλητές που είναι απαραίτητες για τον μεταγλωττιστή για να μεταγλωττίσει (συγχωρήστε τον πλεονασμό) ένα χρήσιμο αρχείο.

Γι 'αυτό σε πολλά μαθήματα θα βρούμε τα ακόλουθα βήματα:

Τα δικά. Christopher Diaz Riveros

Η μαγεία του ./configure:

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

Τα δικά. Christopher Diaz Riveros

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

Τα δικά. Christopher Diaz Riveros

--with-insults... όπως υποδηλώνει το όνομα, συντάσσει sudo με κατάχρηση  είναι μια διασκεδαστική λειτουργία που σας επιτρέπει να προσβάλλετε τον χρήστη κάθε φορά που εισάγει λάθος τον κωδικό πρόσβασής του. Σε τι χρησιμεύει; Λοιπόν, δεν κάνει πολλά  αλλά ξεκαθαρίζει ένα σημείο. Υπάρχουν χιλιάδες επιλογές που δεν περιλαμβάνονται στις περισσότερες διανομές.

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

Απολαύστε τη διασκέδαση στο Gentoo:

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

Απόδοση:

Αναρωτηθήκατε ποτέ γιατί τα νέα μηχανήματα φαίνονται λίγο πιο γρήγορα σε σύγκριση με τα μη τόσο μοντέρνα; Εάν ο επεξεργαστής είναι καλύτερος, υπάρχει περισσότερη μνήμη RAM, όλα είναι καλύτερα, γιατί να μην προχωρήσουμε πιο γρήγορα; Η απάντηση είναι απλή ... συλλογή.

Ας πάρουμε ένα πολύ πρακτικό παράδειγμα.

Τα προγράμματά μου καταρτίζονται με την επιλογή --march=broadwell... αυτό οφείλεται στο γεγονός ότι ο επεξεργαστής μου είναι ευρεία (intel i7). Το μειονέκτημα σε αυτό; κανένας επεξεργαστής πριν από το broadwell δεν μπορεί να αναγνωρίσει αυτό το δυαδικό. Σε αυτό το σημείο θα πρέπει να το δείτε πολύ καθαρά, αν συντάξω με ένα -Μάρτιος  συγκεκριμένα, όλα τα παραπάνω δεν θα λειτουργήσουν... πώς λοιπόν τα δυαδικά πακέτα υποστηρίζουν τόσους πολλούς τύπους υλικού; Εύκολα, μεταγλωττίζονται με τη λιγότερη δυνατή επιλογή  αυτό εγγυάται ότι όλοι οι τύποι υλικού θα μπορούν να το διαβάσουν (τουλάχιστον για συμβατότητα).

Το πραγματικό πρόβλημα... αν χρησιμοποιείτε προγράμματα που είναι μεταγλωττισμένα για i3... Όλη η δύναμη του i7 σας (ή των αντίστοιχων αναλόγων AMD του) πάει χαμένη!! Δεν είναι λυπηρό; 

ευελιξία:

Δεδομένου ότι οι προγραμματιστές Gentoo είναι πολύ έξυπνοι, όλη αυτή η διαδικασία πίσσας, ./configure, make κ.λπ. έχει αντικατασταθεί με τη δύναμη του Μεταφορά. Όλες αυτές οι περίεργες ρυθμίσεις έχουν μετονομαστεί σε σημαίες USE, οπότε αν θέλετε μια συγκεκριμένη ρύθμιση, δεν χρειάζεται να εισαγάγετε τον πηγαίο κώδικα, απλώς ορίστε τη μεταβλητή. Ακολουθεί ένα παράδειγμα για το πώς να το κάνετε με το sudo στο portage. Πρώτα θα δούμε με ποιες επιλογές έχουμε στην τρέχουσα διαμόρφωση καλαίσθητο.

Τα δικά. Christopher Diaz Riveros

Όπως βλέπουμε, οι κόκκινες επιλογές είναι ενεργοποιημένες, οι μπλε όχι, καλά… όλοι μπορούν να διαβάσουν το μύθο 

ας πούμε ότι θέλω να προσθέσω μια επιλογή ...

Τα δικά. Christopher Diaz Riveros

Τόσο απλό όσο η προσθήκη μιας γραμμής σε ένα αρχείο που ονομάζεται sudo (το όνομα είναι παραπομπή) μέσα /etc/portage/package.use/. Με αυτό, την επόμενη φορά που θα εγκαταστήσουμε το sudo, θα μας πει ότι θα μεταγλωττιστεί με την επιλογή ενεργοποιημένη.

Τα δικά. Christopher Diaz Riveros

Αν δίνουμε, ΝΑΙ, το μόνο που έχετε να κάνετε είναι να περιμένετε λίγο και αυτό είναι  τόσο απλό όσο αυτό.

Τελικές σκέψεις:

Λοιπόν, έχουμε ήδη δει πόσο εύκολο είναι να χειριστούμε επιπλέον λειτουργίες στο Gentoo, το οποίο μας επιτρέπει να προσθέσουμε, να αφαιρέσουμε ή να τροποποιήσουμε επιλογές στα αγαπημένα μας προγράμματα. Έχουμε επίσης δει πώς η απόδοση των προγραμμάτων μας εξαρτάται σε μεγάλο βαθμό από τις μεταβλητές με τις οποίες καταρτίζουμε. Εάν έχετε ένα πολύ νέο μηχάνημα, το Gentoo είναι η καλύτερη επιλογή σας. Εάν έχετε ένα πολύ παλιό μηχάνημα, το Gentoo είναι επίσης η επιλογή σας (αν και χρειάζεται λίγη ώρα για τη μεταγλώττιση, τα τελικά προγράμματα θα είναι πολύ ελαφρύτερα).

Σύντομα θα γράψω τον οδηγό εγκατάστασης του Gentoo, τόσο για τους λάτρεις του SystemD όσο και για τους λάτρεις του OpenRC (χρησιμοποιώ το systemd με το GNOME). Παρεμπιπτόντως, ένα άλλο από τα μεγάλα πλεονεκτήματα του Gentoo είναι η δυνατότητα επιλέξτε όλα μέσα στο σύστημά σας, και όταν λέω ότι είναι όλα TODO.

Αν χάσατε την πρώτη μου ανάρτηση, εδώ είναι ο σύνδεσμος:

Gentoo Linux: Η ιστορία ενός ταξιδιού

Με εκτίμηση,