Αυτό το άρθρο είναι ένα άρθρο καθρέφτη της αυτόματης μετάφρασης, κάντε κλικ εδώ για να μεταβείτε στο αρχικό άρθρο.

Άποψη: 2340|Απάντηση: 1

Εισαγωγή στα GCC, CMake, CMakelist, Make, Makefile και Ninja

[Αντιγραφή συνδέσμου]
Δημοσιεύτηκε στις 9/7/2024 8:44:28 μ.μ. | | |
1. Η γέννηση του GCC!

Το 1985, μια σκοτεινή νύχτα που τα δάχτυλά του δεν φαίνονταν, ένας παράξενος άντρας με γένια, κοντή σιλουέτα και ακατάστατα μαλλιά άρχισε να γράφει μια σειρά από μεταγλωττιστές της γλώσσας C. Αυτή η εκφωνία, αργότερα γνωστή ως ο «μεγαλύτερος προγραμματιστής» και «πατέρας του ελεύθερου λογισμικού», ήταν ο Richard Stallman. Μετά από δύο χρόνια σκληρής δουλειάς, ο Richard Stallman, ο οποίος έχει μακρύτερη γενειάδα και πιο ακατάστατα μαλλιά, ολοκλήρωσε την πρώτη έκδοση του μεταγλωττιστή C, την οποία ονομάζει GNU C Complier, η οποία είναι πλέον η πηγή του διάσημου GCC. Αργότερα, το GCC αναπτύχθηκε γρήγορα και τώρα το GCC μπορεί να μεταγλωττίσει όχι μόνο τη γλώσσα C, αλλά και τη γλώσσα C++, Fortran, Pascal, Objective-C, Java, Ada και άλλες γλώσσες. Στις δεκαετίες του '80 και του '90 του περασμένου αιώνα, η συχνότητα της CPU, το μέγεθος του σκληρού δίσκου και το μέγεθος της μνήμης των προσωπικών υπολογιστών μετρήθηκαν σε MB ή ακόμα και KB και ο αριθμός των αρχείων προγράμματος που έπρεπε να μεταγλωττιστούν ήταν μικρός και οι εντολές GCC ήταν αρκετές για να το αντιμετωπίσουν.

Δεύτερον, εμφανίστηκαν νέα προβλήματα! (δημιουργία & δημιουργία αρχείου)

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

Ο Richard Stallman και ο Roland McGrath ανέπτυξαν από κοινού το make and makefile για να λύσουν αυτό το πρόβλημα. Το εργαλείο make μπορεί να θεωρηθεί ως ένα έξυπνο εργαλείο επεξεργασίας παρτίδων, το οποίο δεν έχει τη λειτουργία μεταγλώττισης και σύνδεσης, αλλά χρησιμοποιεί μια μέθοδο παρόμοια με την επεξεργασία παρτίδας - καλώντας τις εντολές που καθορίζονται από τον χρήστη στο αρχείο makefile. Τι είναι το makefile; Το makefile είναι ένα αρχείο σεναρίου, ακριβώς όπως η παρτιτούρα ενός τραγουδιού, το εργαλείο δημιουργίας είναι σαν μαέστρος, ο μαέστρος κατευθύνει ολόκληρη την ορχήστρα να παίξει σύμφωνα με την παρτιτούρα και το εργαλείο δημιουργίας μεταγλωττίζεται και συνδέεται σύμφωνα με τις εντολές στο makefile. Η εντολή makefile περιέχει εντολές για να καλέσετε το gcc (ή άλλο μεταγλωττιστή) για να μεταγλωττίσετε ένα αρχείο προέλευσης.

3. Νέα προβλήματα προέκυψαν ξανά! (Cmake & CMakelist)

Το makefile μπορεί να γραφτεί με το χέρι σε μερικά απλά έργα, αλλά όταν το έργο είναι πολύ μεγάλο, είναι επίσης πολύ ενοχλητικό να γράψετε το makefile με το χέρι. Και τα αρχεία για διαφορετικές πλατφόρμες έχουν εμφανιστεί το ένα μετά το άλλο, συμπεριλαμβανομένων των GNU make, QT's qmake, MSnmake της Microsoft, BSD Make(pmake), Makepp κ.λπ. Αυτά τα εργαλεία Make ακολουθούν διαφορετικές προδιαγραφές και πρότυπα και η μορφή Makefile που εκτελούν ποικίλλει ευρέως. Αυτό δημιουργεί ένα σοβαρό πρόβλημα: εάν το λογισμικό θέλει να είναι cross-platform, πρέπει να μπορεί να μεταγλωττίζεται σε διαφορετικές πλατφόρμες. Εάν χρησιμοποιείτε το εργαλείο Make παραπάνω, πρέπει να γράψετε ένα makefile για κάθε πρότυπο, κάτι που θα είναι τρελή δουλειά, και αν αλλάξετε το makefile της πλατφόρμας, θα πρέπει να το τροποποιήσετε ξανά.

Έτσι, αυτή τη στιγμή, εμφανίστηκε το εργαλείο Cmake και το Cmake μπορεί να δημιουργήσει ένα αρχείο makefile για την παραπάνω δημιουργία πιο εύκολα. Φυσικά, το cmake έχει και άλλες λειτουργίες, δηλαδή μπορεί να δημιουργήσει makefiles που μπορούν να χρησιμοποιηθούν στην αντίστοιχη πλατφόρμα σε όλες τις πλατφόρμες και δεν χρειάζεται να το τροποποιήσετε μόνοι σας. Το cmake είναι το ανώτερο επίπεδο του Makefile και σκοπός τους είναι να παράγουν φορητά makefiles και να απλοποιούν τον τεράστιο φόρτο εργασίας της σύνταξης makefiles μόνοι σας. Τι χρησιμοποιεί όμως το cmake για να δημιουργήσει ένα makefile; Πρέπει επίσης να δημιουργήσει ένα makefile με βάση ένα αρχείο που ονομάζεται CMakeLists.txt file (επιστημονική ονομασία: αρχείο διαμόρφωσης). Τελικά CMakeLists.txt ποιος γράφει το έγγραφο; Φυσικά, το έγραψες μόνος σου.

Τέταρτον, νέα προβλήματα εμφανίστηκαν ξανά! (Νίντζα)

Καθώς η μηχανική λογισμικού γίνεται μεγαλύτερη και πιο περίπλοκη, το πρόβλημα της αργής ταχύτητας εκτέλεσης της μάρκας γίνεται όλο και πιο σοβαρό.

Ως αποτέλεσμα, ένας προγραμματιστής της Google κυκλοφόρησε το Ninja, ένα εργαλείο κατασκευής που εστιάζει στην ταχύτητα. Το Ninja δεν διαθέτει όλα τα είδη προηγμένων χαρακτηριστικών, η σύνταξη και η χρήση είναι πολύ απλές και καθορίζει τι πρέπει να κάνει λεπτομερώς, οπότε αρχίζει να μεταγλωττίζεται πολύ γρήγορα. Σύμφωνα με πραγματικές δοκιμές: με περισσότερα από 30.000 αρχεία πηγής, είναι επίσης δυνατό να ξεκινήσετε μια πραγματική κατασκευή σε 1 δευτερόλεπτο. Αντίθετα, τα Makefiles που γράφτηκαν από ανώτερους μηχανικούς χρειάζονται επίσης 10-20 δευτερόλεπτα για να ξεκινήσουν την κατασκευή.

5. Το τέλειο τέλος μέχρι στιγμής!

Το Cmake μπορεί να δημιουργήσει εργαλεία .ninja και .makefile. Επειδή πολλοί άνθρωποι δεν είναι εξοικειωμένοι με το πώς να γράφουν αρχεία makefile και αρχεία ninja, το cmake χρειάζεται μόνο μια απλή περιγραφή του αρχείου πηγαίου κώδικα (δηλαδή CMakeLists.txt αρχείο) για να δημιουργήσει αυτόματα ένα αρχείο makefile έργου ή ένα αρχείο ninja και, στη συνέχεια, να ξεκινήσει τη μεταγλώττιση μέσω ninja ή make.


5 λεπτά για να κατανοήσετε το make/makefile/cmake/nmake

Πρόσφατα, σας έφτιαξαν make, cmake, makefile...... Αυτά τα πράγματα είναι ζαλισμένα, δείτε το παρακάτω άρθρο, ίσως μπορείτε να καταλάβετε ξεκάθαρα.

1. ΣΣΚ
Είναι η συλλογή GNU Compiler, ή απλά ένας μεταγλωττιστής, ο οποίος μπορεί να μεταγλωττίσει πολλές γλώσσες προγραμματισμού (συμπεριλαμβανομένων των C, C++, Objective-C, Fortran, Java κ.λπ.).

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

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

2. Κάντε
Το εργαλείο make μπορεί να θεωρηθεί ως ένα έξυπνο εργαλείο επεξεργασίας παρτίδων, το οποίο δεν έχει τη λειτουργία μεταγλώττισης και σύνδεσης, αλλά χρησιμοποιεί μια μέθοδο παρόμοια με την επεξεργασία παρτίδας - καλώντας τις εντολές που καθορίζονται από τον χρήστη στο αρχείο makefile.

3. Φτιάξε αρχείο
Τι είναι αυτό?

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

Το makefile μπορεί να ληφθεί χειροκίνητα σε μερικά απλά έργα, αλλά όταν το έργο είναι πολύ μεγάλο, το χειρόγραφο makefile είναι επίσης πολύ ενοχλητικό.

4. cmake
Το cmake μπορεί εύκολα να δημιουργήσει ένα αρχείο makefile για την παραπάνω μάρκα. Φυσικά, το cmake έχει και άλλες καλύτερες λειτουργίες, δηλαδή μπορεί να δημιουργήσει makefiles που μπορούν να χρησιμοποιηθούν στην αντίστοιχη πλατφόρμα σε όλες τις πλατφόρμες, οπότε δεν χρειάζεται να το τροποποιήσουμε μόνοι μας.

Τι χρησιμοποιεί όμως το cmake για να δημιουργήσει ένα makefile; Πρέπει επίσης να δημιουργήσει ένα makefile με βάση ένα αρχείο που ονομάζεται CMakeLists.txt file (επιστημονική ονομασία: αρχείο διαμόρφωσης).

5. CMakeList.txt
Τελικά CMakeLists.txt ποιος γράφει το έγγραφο; Αγαπητέ, είναι γραμμένο από το ίδιο σου το χέρι.

6. nmake
Τι είναι το nmake;

Το nmake είναι μια δευτερεύουσα εντολή στο Microsoft Visual Studio, η οποία πρέπει να εγκαταστήσει το VS, το οποίο στην πραγματικότητα μπορούμε να πούμε ότι είναι ισοδύναμο με το make του linux, καταλαβαίνετε;

Μεταφέρθηκε από:

Η σύνδεση με υπερσύνδεσμο είναι ορατή.
Η σύνδεση με υπερσύνδεσμο είναι ορατή.
Η σύνδεση με υπερσύνδεσμο είναι ορατή.





Προηγούμενος:ERP Kingdee Cloud Έναστρος ουρανός (1) Απλή κατανόηση
Επόμενος:Το πακέτο Rocky Linux 9 δεν βρέθηκε: Δεν ταιριάζει με το όρισμα: xxx
 Σπιτονοικοκύρης| Δημοσιεύτηκε στις 8/12/2024 8:57:06 π.μ. |
Το MinGW παρέχει ένα απλό και βολικό περιβάλλον ανάπτυξης προγραμμάτων που βασίζεται σε GCC για Windows. Το MinGW συλλέγει μια συλλογή από δωρεάν αρχεία κεφαλίδας και βιβλιοθήκης χρήσης των Windows. Ενσωματώνει επίσης το GNU (http://www.gnu.org/), ειδικά εργαλεία ανάπτυξης GNU όπως τα κλασικά gcc, g++, make, κ.λπ. Το MinGW είναι εντελώς ελεύθερο λογισμικό, το οποίο προσομοιώνει το περιβάλλον ανάπτυξης GCC στο Linux στην πλατφόρμα των Windows, παρέχοντας καλή βασική υποστήριξη για την ανάπτυξη πολλαπλών πλατφορμών της C++ και παρέχοντας συνθήκες στους προγραμματιστές που εργάζονται στα Windows για να εξοικειωθούν με τον οργανισμό μηχανικής C++ στο Linux.
Αποκήρυξη:
Όλο το λογισμικό, το υλικό προγραμματισμού ή τα άρθρα που δημοσιεύονται από το Code Farmer Network προορίζονται μόνο για μαθησιακούς και ερευνητικούς σκοπούς. Το παραπάνω περιεχόμενο δεν θα χρησιμοποιηθεί για εμπορικούς ή παράνομους σκοπούς, άλλως οι χρήστες θα υποστούν όλες τις συνέπειες. Οι πληροφορίες σε αυτόν τον ιστότοπο προέρχονται από το Διαδίκτυο και οι διαφορές πνευματικών δικαιωμάτων δεν έχουν καμία σχέση με αυτόν τον ιστότοπο. Πρέπει να διαγράψετε εντελώς το παραπάνω περιεχόμενο από τον υπολογιστή σας εντός 24 ωρών από τη λήψη. Εάν σας αρέσει το πρόγραμμα, υποστηρίξτε γνήσιο λογισμικό, αγοράστε εγγραφή και λάβετε καλύτερες γνήσιες υπηρεσίες. Εάν υπάρχει οποιαδήποτε παραβίαση, επικοινωνήστε μαζί μας μέσω email.

Mail To:help@itsvse.com