Kompilera på Linux: 3 steg för att skapa binärfiler 🔥
Sammanfattning
- De flesta programvaror följer en 3-stegsprocess för att kompilera från källkod:
./konfigurera && skapa && skapa installation
. - Manuset konfigurera kontrollerar beroenden, göra genererar den körbara filen och verktyg som autoconf/automake automatisera denna process.
- Installation är vanligtvis valfri, vilket gör det enklare att köra kommandon kopierade till kataloger i
VÄG
av systemet.
Att kompilera från källkod kan verka skrämmande jämfört med att använda pakethanterare, men med tre grundläggande kommandon är processen enkel och okomplicerad. 🚀
Vad är kompilering från källkod?
De program du använder kan tolkas eller kompileras. Tolkade program är textfiler som innehåller kod som ett annat program (tolkaren) exekverar i realtid. Kompilerade program, å andra sidan, är binära filer som innehåller maskinkod redo att exekveras.
Kompilerade körbara filer är mycket vanliga, särskilt i stora program. När du kompilerar från källkod,sas en kompilator som gcc
för att konvertera koden till ett körbart program, ofta distribuerat över flera filer.

Kompileringsprocessen kan vara omfattande och komplex, vilket är anledningen till att den vanligtvis automatiseras med program som göra
Filerna makefiles kontrollera hur den slutliga körbara filen byggs.
I stora projekt, dessa makefiles De kan vara så komplexa att de genereras automatiskt med verktyg som autokonf och bilmärke för att säkerställa kompatibilitet mellan olika arkitekturer. 🛠️
3-stegs byggprocess: Konfigurera, skapa, installera
De flesta programvaror använder detta grundläggande mönster för att kompilera från källkod:
./konfigurera && skapa && skapa installation
Populära program som Apache använder den här sekvensen (eller någon variant), till exempel förklarar sin fil INSTALLERA:

Node.js följer också denna struktur, vilket anges i dess BUILDING.md-fil:

Varje projekt kan ha små variationer från denna kommandosträng. Använd den logiska OCH-operatorn (&&
) stoppar processen om något steg misslyckas:
./konfigurera && skapa && skapa installation
Eller så kan du köra varje kommando separat på en enda rad med ett semikolon, även om detta kommer att köra alla kommandon utan att stoppa om något misslyckas:
./konfigurera; göra; göra installera
Du kan också göra de tre raderna separat:
./konfigurera make make installera
Om du bara vill testa programmet utan att installera det kan du hoppa över installera
och kör den från dess mapp.
konfigurera
Ready, medan andra (som grep) kräver att ett annat skript körs först för att genereras. Se alltid INSTALL-, BUILD- eller README-filen för att följa projektets rekommendationer. 📋Hur ./configure startar processen
Manuset konfigurera
Det är utgångspunkten för kompileringsprocessen, där projektet anpassas till din miljö.
Det här skriptet kontrollerar beroendena som krävs för projektet, versioner och tillgänglighet. När det är klart genereras en fil med namnet Makefile
för nästa fas.
Manuset konfigurera
erbjuder många konfigurerbara alternativ med ./konfigurera --hjälp
, så att du kan anpassa byggdetaljer.
konfigurera
som göra
generera mycket utdata på skärmen. Använd alternativet --tyst
om du vill köra dessa kommandon utan att visa så mycket detaljer. 🤫Om manuset saknas konfigurera
, vissa projekt inkluderar ett manus som autogen.sh
för att generera den. Till exempel använder htop den:

Mycket enkla projekt eller projekt skrivna på andra språk kanske inte har konfigurera
Där är processen i två steg: gör && gör installera
.
Manuset konfigurera
Den styr även installationsdetaljer, såsom parametern --prefix
, vilket anger installationens rotkatalog. Som standard är det /usr/local
, men du kan ändra det för att organisera dina filer bättre.
gör det mesta av jobbet
Efter konfigurera
genererar en Makefile
, börjar själva kompileringen av programvaran med göra
.
Det här programmet läser Makefile
och följer regler för att avgöra vilka filer som ska skapas eller uppdateras. Makefiles
handskrivna är lätta att förstå för dem som känner till syntaxen.
Till exempel den här Makefile
simple kompilerar ett program som är beroende av filen program.c
:
program: program.c gcc -o program program.c
göra
kontrollera om program.c
ändrats sedan den senaste kompileringen. Om det inte ändrades, gör ingenting; om det gjorde det, kompilera med gcc
.

De makefiles
automatiskt genererade är vanligtvis mycket mer komplexa. Till exempel makefile
htop har 2 440 rader:

Men du behöver inte förstå varje detalj. Om du inte ändrar källkoden, kör den bara. göra
och låta systemet ta hand om det.
Steget göra
Det kan ta minuter eller längre tid för stora projekt. Om det misslyckas beror det vanligtvis på saknade beroenden. Fördelen är att göra
sparar framsteg och återupptar där den slutade när du springer igen.
Avsluta med make install
Efter kompilering finns den skapade körbara filen vanligtvis i projektets rotkatalog eller i en underkatalog som heter soptunna
Du kan köra den med hjälp av den fullständiga sökvägen:

Detta är användbart för testning, men i längden vill du installera det på en lättillgänglig plats.
Målet installera
som definierar makefile
Kopiera nödvändiga filer och ange behörigheter. Standardplatsen är /usr/local/bin
, även om du kan ändra det med --prefix
.
Om du inte har behörighet för den mappen, kör sudo make install
och anger administratörslösenordet.
Installationskatalogen måste inkluderas i din variabel VÄG
för att kunna köra programmet med bara dess namn, utan att ange hela sökvägen.