Compilazione su Linux: 3 passaggi per creare file binari 🔥
Riepilogo chiave
- La maggior parte dei software segue un processo in 3 fasi per compilare il codice sorgente:
./configure && make && make install
. - La sceneggiatura configurare controlla le dipendenze, Fare genera l'eseguibile e strumenti come autoconf/automake automatizzare questo processo.
- L'installazione è solitamente facoltativa, rendendo più semplice l'esecuzione dei comandi copiati nelle directory in
SENTIERO
del sistema.
La compilazione dal codice sorgente può sembrare intimidatoria rispetto all'utilizzo dei gestori di pacchetti, ma con tre comandi di base, il processo è semplice e diretto. 🚀
Che cosa significa compilare dal codice sorgente?
I programmi utilizzati possono essere interpretati o compilati. I programmi interpretati sono file di testo contenenti codice che un altro programma (l'interprete) esegue in tempo reale. I programmi compilati, invece, sono file binari contenenti codice macchina pronto per essere eseguito.
Gli eseguibili compilati sono molto comuni, soprattutto nei programmi di grandi dimensioni. Quando si compila dal codice sorgente,sas un compilatore come gcc
per convertire il codice in un programma eseguibile, spesso distribuito su più file.

Il processo di compilazione può essere esteso e complesso, motivo per cui di solito è automatizzato con programmi come Fare
I file makefile controllare come viene creato l'eseguibile finale.
Nei grandi progetti, questi makefile Possono essere così complessi che vengono generati automaticamente con strumenti come autoconf E marca di automobili per garantire la compatibilità tra diverse architetture. 🛠️
Processo di compilazione in 3 fasi: configurazione, creazione, installazione
La maggior parte dei software utilizza questo schema di base per compilare dal codice sorgente:
./configure && make && make install
Programmi popolari come Apache utilizzano questa sequenza (o qualche variante), come spiega il suo fascicolo INSTALLARE:

Anche Node.js segue questa struttura, come indicato nel suo file BUILDING.md:

Ogni progetto potrebbe presentare leggere variazioni rispetto a questa stringa di comando. Utilizzare l'operatore logico AND (&&
) arresta il processo se uno qualsiasi dei passaggi fallisce:
./configure && make && make install
In alternativa, è possibile eseguire ogni comando separatamente su una singola riga con un punto e virgola, anche se in questo modo verranno eseguiti tutti i comandi senza fermarsi se qualcuno fallisce:
./configura; crea; crea installazione
Puoi anche fare le tre righe separatamente:
./configura make make install
Se vuoi solo provare il programma senza installarlo, puoi saltare effettuare l'installazione
ed eseguirlo dalla sua cartella.
configurare
Ready, mentre altri (come grep) richiedono prima l'esecuzione di un altro script per generarlo. Fai sempre riferimento ai file INSTALL, BUILD o README per seguire le raccomandazioni del progetto. 📋Come ./configure avvia il processo
La sceneggiatura configurare
È il punto di partenza del processo di compilazione, che adatta il progetto al tuo ambiente.
Questo script verifica le dipendenze necessarie per il progetto, verificandone le versioni e la disponibilità. Al termine, genera un file denominato Makefile
per la fase successiva.
La sceneggiatura configurare
offre molte opzioni configurabili con ./configure --help
, consentendo di personalizzare i dettagli della build.
configurare
COME Fare
generare molto output sullo schermo. Utilizzare l'opzione --Tranquillo
se vuoi eseguire questi comandi senza mostrare così tanti dettagli. 🤫Se manca lo script configurare
, alcuni progetti includono uno script come autogen.sh
per generarlo. Ad esempio, htop lo usa:

Progetti molto semplici o progetti scritti in altre lingue potrebbero non avere configurare
In questo caso il processo si svolge in due fasi: crea e installa
.
La sceneggiatura configurare
Controlla anche i dettagli dell'installazione, come il parametro --prefisso
, che imposta la directory radice di installazione. Per impostazione predefinita è /usr/locale
, ma puoi modificarlo per organizzare meglio i tuoi file.
il make fa la maggior parte del lavoro
Dopo configurare
genera un Makefile
, la compilazione vera e propria del software inizia con Fare
.
Questo programma legge il Makefile
e segue le regole per decidere quali file creare o aggiornare. Il Makefile
scritti a mano sono facili da comprendere per chi conosce la sintassi.
Ad esempio, questo Makefile
semplice compila un programma che dipende dal file programma.c
:
programma: programma.c gcc -o programma programma.c
Fare
controlla se programma.c
è cambiato dall'ultima compilazione. Se non è cambiato, non fare nulla; se è cambiato, compila con gcc
.

IL makefile
generati automaticamente sono solitamente molto più complessi. Ad esempio, il file di creazione
htop ha 2.440 linee:

Ma non è necessario comprendere ogni dettaglio. A meno che non modifichi il codice sorgente, eseguilo e basta. Fare
e lasciare che il sistema se ne occupi.
Il passo Fare
Potrebbe richiedere minuti o più per progetti di grandi dimensioni. Se fallisce, di solito è dovuto a dipendenze mancanti. Il vantaggio è che Fare
salva i progressi e riprende da dove si era interrotto quando si esegue di nuovo.
Completamento con make install
Dopo la compilazione, l'eseguibile creato si trova solitamente nella radice del progetto o in una sottodirectory chiamata bidone
Puoi eseguirlo utilizzando il percorso completo:

Questa soluzione è utile per i test, ma a lungo termine sarà opportuno installarla in un luogo accessibile.
L'obiettivo installare
che definisce il file di creazione
Copia i file necessari e imposta i permessi. La posizione predefinita è /usr/local/bin
, anche se puoi cambiarlo con --prefisso
.
Se non hai i permessi per quella cartella, esegui sudo make install
e fornisce la password dell'amministratore.
La directory di installazione deve essere inclusa nella variabile SENTIERO
per poter eseguire il programma solo con il suo nome, senza specificare il percorso completo.