` voegen de inhoud van standaard bibliotheekheaderbestanden in uw code in.
* Macro-uitbreiding: Macro's die zijn gedefinieerd met `#define` worden vervangen door hun definities.
* Voorwaardelijke compilatie: Richtlijnen zoals `#ifdef` bepalen welke delen van de code worden gecompileerd op basis van voorwaarden.
De uitvoer van deze fase is niet direct voor mensen leesbaar; het is een aangepaste versie van uw broncode.
3. Compilatie:
De compiler (`gcc`) vertaalt de voorbewerkte code in assembleertaal, specifiek voor de doel-CPU-architectuur (bijvoorbeeld x86-64). Deze assemblagecode vertegenwoordigt uw programma in een vorm op laag niveau die de computer directer kan begrijpen.
4. Montage:
De assembler (`as`) converteert de assemblagecode naar objectcode. Objectbestanden (meestal met de extensie `.o`, bijvoorbeeld `mijnprogramma.o`) bevatten machine-instructies, maar zijn nog niet volledig uitvoerbaar omdat ze mogelijk afhankelijk zijn van andere objectbestanden of bibliotheken.
5. Koppelen:
De linker (`ld`) combineert de objectcode van uw programma met de noodzakelijke bibliotheken (zoals de standaard C-bibliotheek, `libc`) om één enkel uitvoerbaar bestand te maken. Dit omvat het oplossen van verwijzingen tussen verschillende delen van de code en het opnemen van de vereiste bibliotheekfuncties.
Het compilatiecommando:
Het typische commando om een C-programma in CentOS te compileren met behulp van GCC is:
``` bash
gcc mijnprogramma.c -o mijnprogramma
```
* `gcc`:Roept de GCC-compiler aan.
* `myprogram.c`:Specificeert het broncodebestand.
* `-o mijnprogramma`:Specificeert de naam van het uitvoerbare bestand. Als u dit weglaat, is de standaardnaam van het uitvoerbare bestand 'a.out'.
Voorbeeld:
Laten we zeggen dat je `myprogram.c` hebt:
```c
#include
int hoofd() {
printf("Hallo wereld!\n");
retour 0;
}
```
Je zou het als volgt compileren en uitvoeren:
``` bash
gcc mijnprogramma.c -o mijnprogramma
./mijnprogramma
```
Dit zal een uitvoerbaar bestand produceren met de naam `myprogram`, dat u vervolgens vanaf de opdrachtregel kunt uitvoeren. De uitvoer is "Hallo wereld!".
Meer geavanceerde compilatie:
* Meerdere bronbestanden: Als uw programma over meerdere `.c`-bestanden is verspreid, kunt u ze allemaal tegelijk compileren:
``` bash
gcc file1.c file2.c -o mijnprogramma
```
* Optimalisatie: Vlaggen zoals `-O2` (niveau 2-optimalisatie) kunnen de prestaties van uw uitvoerbare bestand verbeteren.
``` bash
gcc mijnprogramma.c -o mijnprogramma -O2
```
* Foutopsporing: De `-g` vlag voegt foutopsporingsinformatie toe aan het uitvoerbare bestand, waardoor het gemakkelijker wordt om een debugger zoals `gdb` te gebruiken.
``` bash
gcc mijnprogramma.c -o mijnprogramma -g
```
Samenvattend omvat het compileren van een C-programma in CentOS een reeks stappen die worden georkestreerd door de GCC-toolchain, waardoor uw voor mensen leesbare code wordt omgezet in een door een machine uitvoerbaar programma. Als u deze stappen begrijpt, kunt u compilatiefouten diagnosticeren en uw bouwproces optimaliseren.