Compileren op Linux: 3 stappen voor het maken van binaire bestanden 🔥
Belangrijkste samenvatting
- De meeste software volgt een proces van drie stappen om te compileren vanuit de broncode:
./configure && make && make install
. - Het script configureren controleert de afhankelijkheden, maken genereert het uitvoerbare bestand en hulpmiddelen zoals autoconf/automake dit proces automatiseren.
- De installatie is doorgaans optioneel, waardoor het eenvoudiger is om opdrachten uit te voeren die in de mappen zijn gekopieerd.
PAD
van het systeem.
Het compileren vanuit broncode kan intimiderend lijken vergeleken met het gebruik van pakketbeheerders, maar met drie basisopdrachten is het proces eenvoudig en duidelijk. 🚀
Wat is compileren vanuit broncode?
De programma's die u gebruikt, kunnen geïnterpreteerd of gecompileerd zijn. Geïnterpreteerde programma's zijn tekstbestanden met code die een ander programma (de interpreter) in realtime uitvoert. Gecompileerde programma's daarentegen zijn binaire bestanden met machinecode die klaar is om uitgevoerd te worden.
Gecompileerde uitvoerbare bestanden zijn heel gebruikelijk, vooral in grote programma's. Wanneer je vanuit broncode compileert,sas een compiler zoals gcc
om de code om te zetten in een uitvoerbaar programma, vaak verspreid over meerdere bestanden.

Het compilatieproces kan uitgebreid en complex zijn, daarom wordt het meestal geautomatiseerd met programma's zoals maken
. De bestanden makefiles bepalen hoe het uiteindelijke uitvoerbare bestand wordt opgebouwd.
Bij grote projecten zijn deze makefiles Ze kunnen zo complex zijn dat ze automatisch worden gegenereerd met hulpmiddelen zoals autoconfiguratie En automake om compatibiliteit tussen verschillende architecturen te garanderen. 🛠️
3-stappen bouwproces: configureren, maken, installeren
De meeste software gebruikt dit basispatroon om te compileren vanuit de broncode:
./configure && make && make install
Populaire programma's zoals Apache gebruiken deze volgorde (of een variant daarvan), zoals legt zijn dossier uit INSTALLEREN:

Node.js volgt ook deze structuur, zoals aangegeven in het BUILDING.md-bestand:

Elk project kan kleine afwijkingen van deze opdrachtreeks hebben. Gebruik de logische AND-operator (&&
) stopt het proces als een stap mislukt:
./configure && make && make install
U kunt er ook voor kiezen om elke opdracht afzonderlijk op één regel uit te voeren met een puntkomma. Op die manier worden alle opdrachten uitgevoerd zonder dat ze worden gestopt als er een mislukt:
./configure; maken; maken installeren
Je kunt de drie regels ook afzonderlijk doen:
./configure make make install
Als u het programma alleen wilt uitproberen zonder het te installeren, kunt u dit overslaan maken installeren
en voer het uit vanuit de map.
configureren
Ready, terwijl andere (zoals grep) eerst een ander script vereisen om het te genereren. Raadpleeg altijd het INSTALL-, BUILD- of README-bestand om de aanbevelingen van het project te volgen. 📋Hoe ./configure het proces start
Het script configureren
Het is het startpunt van het compilatieproces, waarbij het project wordt aangepast aan uw omgeving.
Dit script controleert de afhankelijkheden die nodig zijn voor het project, controleert versies en beschikbaarheid. Na voltooiing genereert het een bestand met de naam Maakbestand
voor de volgende fase.
Het script configureren
biedt veel configureerbare opties met ./configure --help
, waardoor u de bouwdetails kunt aanpassen.
configureren
als maken
genereer veel output op het scherm. Gebruik de optie --rustig
als je deze opdrachten wilt uitvoeren zonder al te veel details te tonen. 🤫Als het script ontbreekt configureren
, sommige projecten bevatten een script zoals autogen.sh
om het te genereren. Htop gebruikt het bijvoorbeeld:

Zeer eenvoudige projecten of projecten die in andere talen zijn geschreven, hebben mogelijk niet configureren
Daar verloopt het proces in twee stappen: maak && maak installeer
.
Het script configureren
Het beheert ook installatiedetails, zoals de parameter --voorvoegsel
, waarmee de hoofdmap van de installatie wordt ingesteld. Standaard is dit /usr/lokaal
, maar u kunt het wijzigen om uw bestanden beter te organiseren.
make doet het meeste werk
Na configureren
genereert een Maakbestand
, de daadwerkelijke compilatie van de software begint met maken
.
Dit programma leest de Maakbestand
en volgt regels om te bepalen welke bestanden moeten worden gemaakt of bijgewerkt. De Makefiles
handgeschreven teksten zijn gemakkelijk te begrijpen voor mensen die de syntaxis kennen.
Bijvoorbeeld deze Maakbestand
compileert eenvoudig een programma dat afhankelijk is van het bestand programma.c
:
programma: programma.c gcc -o programma programma.c
maken
controleren of programma.c
gewijzigd sinds de laatste compilatie. Als het niet is gewijzigd, doe dan niets; als het wel is gewijzigd, compileer dan met gcc
.

De makefiles
automatisch gegenereerde zijn meestal veel complexer. Bijvoorbeeld de maakbestand
htop heeft 2.440 regels:

Maar je hoeft niet elk detail te begrijpen. Tenzij je de broncode aanpast, kun je hem gewoon uitvoeren. maken
en laat het systeem het regelen.
De stap maken
Bij grote projecten kan het minuten of langer duren. Als het mislukt, komt dat meestal door ontbrekende afhankelijkheden. Het voordeel is dat maken
slaat de voortgang op en gaat verder waar u gebleven was wanneer u weer gaat hardlopen.
Afwerking met make install
Na het compileren bevindt het gemaakte uitvoerbare bestand zich meestal in de root van het project of in een submap met de naam prullenbak
Je kunt het uitvoeren met behulp van het volledige pad:

Dit is handig voor tests, maar op de lange termijn wilt u het op een toegankelijke locatie installeren.
Het doel installeren
dat definieert de maakbestand
Kopieer de benodigde bestanden en stel de rechten in. De standaardlocatie is /usr/lokaal/bin
, hoewel je het kunt veranderen met --voorvoegsel
.
Als u geen rechten hebt voor die map, voer dan uit sudo make install
en geeft het beheerderswachtwoord.
De installatiemap moet in uw variabele worden opgenomen PAD
om het programma alleen met de naam te kunnen uitvoeren, zonder het volledige pad op te geven.