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ŻKAsystemu.
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 koszMoż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.














