Λειτουργικά συστήματα

Γνώση Υπολογιστών >> Λειτουργικά συστήματα >  >> CentOS

Πώς το πρόγραμμα C μεταγλωττίζει στο Centos Linux;

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

1. Ο πηγαίος κώδικας (αρχείο .c):

Γράφετε το πρόγραμμα C σας σε ένα αρχείο με την επέκταση `.c` (π.χ.` myprogram.c`).

2. Προεπεξεργασία:

Ο προεπεξεργαστής (`CPP`) χειρίζεται οδηγίες ξεκινώντας με`#`στον κωδικό σας. Αυτό περιλαμβάνει:

* συμπεριλαμβανομένων αρχείων κεφαλίδας: Δηλώσεις όπως `#include ` Εισάγετε τα περιεχόμενα των τυπικών αρχείων κεφαλίδας βιβλιοθήκης στον κωδικό σας.

* Επέκταση μακροεντολής: Οι μακροεντολές που ορίζονται χρησιμοποιώντας `#define` αντικαθίστανται με τους ορισμούς τους.

* υπό όρους συλλογής: Οδηγίες όπως το `#ifdef` ελέγχει ποια μέρη του κώδικα καταρτίζονται με βάση τις συνθήκες.

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

3. Σύνταξη:

Ο μεταγλωττιστής (`GCC`) μεταφράζει τον προεπεξεργασμένο κώδικα στη γλώσσα συναρμολόγησης, ειδικά για την αρχιτεκτονική CPU-Target (π.χ. x86-64). Αυτός ο κωδικός συναρμολόγησης αντιπροσωπεύει το πρόγραμμά σας σε μορφή χαμηλού επιπέδου που ο υπολογιστής μπορεί να κατανοήσει πιο άμεσα.

4. Συναρμολόγηση:

Ο Assembler (`as`) μετατρέπει τον κωδικό συναρμολόγησης σε κωδικό αντικειμένου. Τα αρχεία αντικειμένων (τυπικά με επέκταση `.o`, π.χ.` myprogram.o`) περιέχουν οδηγίες μηχανής, αλλά δεν είναι ακόμη πλήρως εκτελέσιμα επειδή μπορεί να εξαρτώνται από άλλα αρχεία αντικειμένων ή βιβλιοθήκες.

5. Σύνδεση:

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

Η εντολή συλλογής:

Η τυπική εντολή για τη σύνταξη ενός προγράμματος C στο CentOS χρησιμοποιώντας το GCC είναι:

`` `bash

gcc myprogram.c -o myProgram

`` `

* `GCC`:επικαλείται τον μεταγλωττιστή GCC.

* `myProgram.c`:Καθορίζει το αρχείο πηγαίου κώδικα.

* `-o myProgram`:Καθορίζει το όνομα του εκτελέσιμου αρχείου εξόδου. Εάν παραλειφθεί, το προεπιλεγμένο εκτελέσιμο όνομα θα είναι `a.out '.

Παράδειγμα:

Ας πούμε ότι έχετε `myprogram.c`:

`` `c

#include

int main () {

printf ("Γεια σας, κόσμος! \ n");

επιστροφή 0;

}

`` `

Θα το συντάσσετε και θα το εκτελέσετε έτσι:

`` `bash

gcc myprogram.c -o myProgram

./myprogram

`` `

Αυτό θα παράγει ένα εκτελέσιμο αρχείο με το όνομα `MyProgram`, το οποίο στη συνέχεια μπορείτε να εκτελέσετε από τη γραμμή εντολών. Η έξοδος θα είναι "Γεια σας, κόσμος!".

πιο προηγμένη συλλογή:

* Αρχεία προέλευσης: Εάν το πρόγραμμά σας έχει διαδοθεί σε πολλαπλά αρχεία `.c`, μπορείτε να τα καταρτίσετε όλα ταυτόχρονα:

`` `bash

GCC File1.c File2.c -o MyProgram

`` `

* Βελτιστοποίηση: Οι σημαίες όπως το `-O2` (βελτιστοποίηση επιπέδου 2) μπορούν να βελτιώσουν την απόδοση του εκτελέσιμου σας.

`` `bash

GCC myprogram.c -o myprogram -o2

`` `

* Debugging: Η σημαία `-g` προσθέτει πληροφορίες εντοπισμού σφαλμάτων στο εκτελέσιμο, καθιστώντας ευκολότερη τη χρήση ενός εντοπισμού σφαλμάτων όπως το` GDB`.

`` `bash

GCC myprogram.c -o myprogram -g

`` `

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

Συναφής σύστασή

Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα