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
SENTIEROdel 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 FareI 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 configurareIn 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 bidonePuoi 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.














