Linux kompilacja krok po kroku
Najczęściej spotykane programy na system Linuks są tak zwane binaria- czy zestaw plików do kompilacji. Aby cieszyć się z takiego programu- trzeba go skompilować. Jest to jeden z najcięższych problemów dla początkujących użytkowników Równie trudnym momentem dla początkujących programistów na Linuksie jest - kompilacja napisanego programu.
Kompilacja Linux
Wiele osób myśli, że jest to bardzo trudne i tylko Orły to potrafią.
Jesteście w błędzie! Kompilacja napisanego programu jest banalnie
prosta i szybka. Zapraszam do zapoznania się z tym artykółem. Każdy
krok kompilacji naszego programu jest szczegółowo opisany
1. Pierwszym krokiem jest samo ściągnięcie źródeł.
Najwięcej ich można znaleźć na sourceforge.net. Kiedy już mamy plik ze źródłami a najczęściej ma on postać nazwa_programu.tar.gz skopjujmy go do folderu /usr/src. Być może do zapisu w tym katalogu będą nam potrzebne prawa roota. W tym miejscu najlepiej jest przechowywać żródła programów.
Posiadany
przez nas pliki jest archiwum, które przechowuje źródła programu.
Należy je rozpakować poleceniem: (możemy również użyć graficznych
programów jak ark czy file-roller
tar -xvzf nazwa_programu.tar.gz
Opis przełączników dla tar:
x - oznacza, żeby dany plik został rozpakowany
v - pokaże nam listę plików i szczegóły
z - filtrowanie pakietów przez gzip
f - oznacza, że plik archiwum jest plikiem lokalnym
2.
W wyniku powyższych operacji otrzymaliśmy katalog, w którym znajdują
się źródła programu, licencjie oraz pliki informujące jak dany program
skompilować i zainstalować. Najczęściej jest to plik INSTALL lub README.
Typowa kompilacja rozpoczyna się od wydania polecenia w katalogu ze źródłami:
./configure
Jest
to prosty skrypt, który sprawdza nasz system pod względem, czy posiada
on potrzebne programy lub biblioteki do skompilowania naszych źródeł.
Wygląda on mniej więcej tak:
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for awk... awk
checking whether make sets $(MAKE)... yes
checking for gcc... gcc
checking for C compiler default output... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
Bardzo często zdarza się, że configure zatrzyma się w pewnym momencie i pokarze listę błędów, które uniemożliwiają nam skompilowanie programu:
checking for libgnutls-config... no
checking for libgnutls - version >= 1.0.0... no
*** The libgnutls-config script installed by LIBGNUTLS could not be found
*** If LIBGNUTLS was installed in PREFIX, make sure PREFIX/bin is in
*** your path, or set the LIBGNUTLS_CONFIG environment variable to the
*** full path to libgnutls-config.
configure: WARNING:
***
*** libgnutls was not found. You may want to get it from
*** ftp://ftp.gnutls.org/pub/gnutls/
Jak widać powyżej brakuje nam biblioteki libgnutls w wersji większej lub równej 1.0.0. Configure również pokazało, gdzie należy szukać podanych plików. Po zainstalowaniu biblioteki odpalamy jeszcze raz configure
i czytamy rezultaty. Być może teraz znajdzie brak innych plików, więc
będzie trzeba je doinstalować. Jeśli wszystko pójdzie dobrze powinniśmy
otrzymać komunikat w stylu:
Good - your configure finished. Start make now
3. Kompilacja.
Sama kompilacja ogranicza się do wydania polecenia
make
Rezultatem jego działania jest szereg linijek niezrozumiałego tekstu:
if
gcc -DHAVE_CONFIG_H -I. -I. -I.. -DSYSCONFDIR=\"/usr/local/etc\"
-DDATADIR=\"/usr/local/share/ekg2\"
-DPLUGINDIR=\"/usr/local/lib/ekg2/plugins\" -I../libltdl -g -O2
-Wall -MT protocol.o -MD -MP -MF ".deps/protocol.Tpo" \
-c -o protocol.o `test -f 'protocol.c' || echo './'`protocol.c; \
then mv -f ".deps/protocol.Tpo" ".deps/protocol.Po"; \
else rm -f ".deps/protocol.Tpo"; exit 1; \
fi
if
gcc -DHAVE_CONFIG_H -I. -I. -I.. -DSYSCONFDIR=\"/usr/local/etc\"
-DDATADIR=\"/usr/local/share/ekg2\"
-DPLUGINDIR=\"/usr/local/lib/ekg2/plugins\" -I../libltdl -g -O2
-Wall -MT sessions.o -MD -MP -MF ".deps/sessions.Tpo" \
-c -o sessions.o `test -f 'sessions.c' || echo './'`sessions.c; \
then mv -f ".deps/sessions.Tpo" ".deps/sessions.Po"; \
else rm -f ".deps/sessions.Tpo"; exit 1; \
Z reguły kompilacja kończy się następująco:
make[2]: Nie nic do roboty w `all-am'.
make[2]: Leaving directory `/usr/src/ekg2-20050812'
make[1]: Leaving directory `/usr/src/ekg2-20050812'
Nasz program jest skompilowany. Czas go zainstalować.
4. Instalacja skompilowanych źródeł musi odbywać się z poziomu root dlatego w konsoli wydajemy polecenie su i podajemy hasło administratora. Teraz możemy wydać polecenie:
make install
Teraz
system kopiuje odpowiednie pliki binarne do katalogów systemu. Po całej
tej operacji wystarczy w konsoli napisać nazwę programu i się on
uruchomi.
5. Jeśli program się nam znudzi i chcemy go
usunąć to wystarczy wejść do katalogu ze źródłem programu (domyślnie
/usr/src/nazwa_programu) i jako root wydajemy polecenie
make uninstall
To jest jedna z przyczyn, dla których warto trzymać źródła w jednym miejscu.
6. Uruchamianie naszego programu
Po każdej kompilacji miło uruchomić swój program :) Aby właśnie spełnić to marzenie wpisujemy:
./nazwa_programu
W tym momencie otwiera się nasz upragniony program :)
---
Michał & thecamels.org
|