Kompilacja w systemie Linux: 3 kroki tworzenia plików binarnych 🔥
Podsumowanie kluczowe
- Większość oprogramowania kompiluje się z kodu źródłowego w 3-etapowym procesie:
./configure && make && make install
. - Skrypt konfigurować sprawdza zależności, robić generuje plik wykonywalny i narzędzia takie jak autoconf/automake zautomatyzować ten proces.
- Instalacja jest zazwyczaj opcjonalna, co ułatwia uruchamianie poleceń skopiowanych do katalogów w
ŚCIEŻKA
systemu.
Kompilacja z kodu źródłowego może wydawać się onieśmielająca w porównaniu z korzystaniem z menedżerów pakietów, ale dzięki trzem podstawowym poleceniom proces ten staje się prosty i przejrzysty. 🚀
Czym jest kompilacja z kodu źródłowego?
Używane programy mogą być interpretowane lub kompilowane. Programy interpretowane to pliki tekstowe zawierające kod, który inny program (interpreter) wykonuje w czasie rzeczywistym. Programy kompilowane to natomiast pliki binarne zawierające kod maszynowy gotowy do wykonania.
Kompilowane pliki wykonywalne są bardzo powszechne, zwłaszcza w dużych programach. Kompilując z kodu źródłowego,sas kompilator taki jak gcc
aby przekonwertować kod na program wykonywalny, często rozproszony w wielu plikach.

Proces kompilacji może być rozległy i złożony, dlatego zwykle jest automatyzowany za pomocą programów takich jak robić
Pliki pliki makefile kontroluj sposób tworzenia końcowego pliku wykonywalnego.
W dużych projektach te pliki makefile Mogą być tak złożone, że są generowane automatycznie za pomocą narzędzi takich jak autokonfiguracja I automake aby zapewnić kompatybilność pomiędzy różnymi architekturami. 🛠️
Proces kompilacji w 3 krokach: konfiguracja, tworzenie, instalacja
Większość oprogramowania wykorzystuje ten podstawowy wzorzec do kompilacji z kodu źródłowego:
./configure && make && make install
Popularne programy, takie jak Apache, wykorzystują tę sekwencję (lub jakąś odmianę), np. wyjaśnia swój plik ZAINSTALOWAĆ:

Node.js również stosuje tę strukturę, co widać w pliku BUILDING.md:

Każdy projekt może nieznacznie różnić się od tego ciągu poleceń. Użyj operatora logicznego AND (&&
) zatrzymuje proces, jeśli którykolwiek z kroków się nie powiedzie:
./configure && make && make install
Można też uruchomić każde polecenie osobno w pojedynczym wierszu, oddzielając je średnikiem. W takim przypadku wszystkie polecenia zostaną uruchomione bez zatrzymywania, jeśli którekolwiek z nich zawiedzie:
./configure; make; make install
Można również wykonać te trzy linijki osobno:
./configure make make install
Jeśli chcesz po prostu wypróbować program bez instalowania go, możesz pominąć ten krok zrób instalację
i uruchom go z jego folderu.
konfigurować
Gotowe, podczas gdy inne (jak grep) wymagają najpierw uruchomienia innego skryptu, aby je wygenerować. Zawsze zapoznaj się z plikami INSTALL, BUILD lub README, aby postępować zgodnie z zaleceniami projektu. 📋Jak ./configure rozpoczyna proces
Skrypt konfigurować
Jest to punkt wyjścia procesu kompilacji, dostosowujący projekt do środowiska.
Ten skrypt sprawdza zależności wymagane dla projektu, sprawdzając wersje i dostępność. Po zakończeniu generuje plik o nazwie Makefile
do następnej fazy.
Skrypt konfigurować
oferuje wiele konfigurowalnych opcji z ./configure --help
, co pozwala na dostosowanie szczegółów kompilacji.
konfigurować
Jak robić
generować dużo danych na ekranie. Użyj opcji --cichy
jeśli chcesz uruchomić te polecenia bez pokazywania zbyt wielu szczegółów. 🤫Jeśli skryptu brakuje konfigurować
niektóre projekty obejmują skrypt taki jak autogen.sh
Aby go wygenerować. Na przykład, htop go używa:

Bardzo proste projekty lub projekty napisane w innych językach mogą nie mieć konfigurować
. W tym przypadku proces przebiega w dwóch etapach: make && make install
.
Skrypt konfigurować
Kontroluje również szczegóły instalacji, takie jak parametry --prefiks
, który ustawia katalog główny instalacji. Domyślnie jest to /usr/local
, ale możesz to zmienić, aby lepiej zorganizować swoje pliki.
make wykonuje większość pracy
Po konfigurować
generuje Makefile
, faktyczna kompilacja oprogramowania zaczyna się od robić
.
Ten program odczytuje Makefile
i postępuje zgodnie z zasadami, decydując, które pliki utworzyć lub zaktualizować. Pliki Makefiles
Teksty pisane ręcznie są łatwe do zrozumienia dla osób znających składnię.
Na przykład ten Makefile
po prostu kompiluje program, który zależy od pliku program.c
:
program: program.c gcc -o program program.c
robić
sprawdź czy program.c
Zmienione od ostatniej kompilacji. Jeśli nic się nie zmieniło, nie rób nic; jeśli jednak się zmieniło, skompiluj z gcc
.

Ten pliki makefile
generowanych automatycznie są zazwyczaj znacznie bardziej złożone. Na przykład, plik makefile
htop ma 2440 linii:

Ale nie musisz rozumieć każdego szczegółu. Chyba że modyfikujesz kod źródłowy, po prostu go uruchom. robić
i pozwól systemowi się tym zająć.
Krok robić
W przypadku dużych projektów może to potrwać kilka minut lub dłużej. Jeśli się nie powiedzie, zazwyczaj wynika to z brakujących zależności. Zaletą jest to, że robić
zapisuje postęp i wznawia działanie od miejsca, w którym zostało przerwane, gdy ponownie biegniesz.
Zakończenie poleceniem make install
Po skompilowaniu utworzony plik wykonywalny zwykle znajduje się w katalogu głównym projektu lub w podkatalogu o nazwie kosz
Możesz uruchomić go używając pełnej ścieżki:

Przydaje się to do celów testowych, ale na dłuższą metę warto zainstalować urządzenie w łatwo dostępnym miejscu.
Cel zainstalować
który definiuje plik makefile
Skopiuj niezbędne pliki i ustaw uprawnienia. Domyślna lokalizacja to /usr/local/bin
, chociaż możesz to zmienić za pomocą --prefiks
.
Jeśli nie masz uprawnień do tego folderu, uruchom sudo make install
i podaje hasło administratora.
Katalog instalacyjny musi być uwzględniony w zmiennej ŚCIEŻKA
móc uruchomić program, podając tylko jego nazwę, bez konieczności określania pełnej ścieżki.