Celem ćwiczenia było przypomnienie sposobów kompilacji programów pod systemem Linux oraz wykorzystania programu make.
Program make jest narzędziem pomocnym programiście. Pozwala on usprawnić proces kompilacji, debugowania czy nawet pomaga zachować porządek w plikach, na których operujemy. By skorzystać z dobrodziejstw jakie niesie ze sobą make, należy utworzyć plik reguł do wykonania. Plik taki musi nazywać się „Makefile”, a jego składnia powinna wyglądać następująco:
plik_wynikowe: pliki_składowe
polecenie
moj_program: moj_program.o pomiar_czasu.o
gcc -03 moj_program.o pomiar_czasu.o -o moj_program
Dzięki programowi make, jedną komendą możemy skompilować wiele plików i zlinkować je do naszego programu. W pliku Makefile możemy również tworzyć własne zmienne, które pomogą nam przy tworzeniu dodatkowych reguł. Często stosowane jest również umieszczenie pod etykietą clean funkcji rm, która po wywołaniu pozwala nam szybko sprzątnąć stare, skompilowane pliki oraz pliki pośrednie.
Biblioteki statyczne są plikami skompilowanymi. Załączanie tego typu plików pozwala programiście zaoszczędzić czas kompilacji. Oszczędność czasu kompilacji znaczyła wiele kiedyś. Obecnie przyspieszenie to nie jest w praktyce zauważalne przez użytkownika.
Biblioteka statyczna może zostać wykorzystana w współpracy między programistami. Pozwala ona na wykorzystanie funkcji składowych bez konieczności udostępniania kodu źródłowego.
Dla naszych potrzeb polecenie tworzenia biblioteki statycznej wyglądało następująco:
ar -rs libpomiar_czasu.a pomiar_czasu.o
Należało również pamiętać, żeby załączyć tą bibliotekę w procesie kompilacji naszego programu:
gcc moj_program.o -o moj_program -L. -lpomiar_czasu -lm
Do kompilacji naszych programów wykorzystaliśmy kompilator gcc. Jest to najpopularniejszy kompilator dla systemów Linux/Unix. Nasz program wykonywał 100 000 operacji arytmetycznych i 100 000 operacji I/O. Podczas operacji I/O była również wykonywana operacja inkrementacji gdyż na ekran wypisywane były kolejne liczby z przedziału <-50 000, 50 000). Operacja arytmetyczna mno
Oto czasy uzyskane w pracowni komputerowej:
I/O – standard/cpu/zegar: 0.01 / 0.016 / 0.067
-/+ – stnadard/cpu/zegar: 0 / 0 / 0.000559
Oto czasy uzyskane po ponownym wykonaniu ćwiczenia w domu:
I/O – standard/cpu/zegar: 0.028 / 0.022 / 1.233
-/+ – stnadard/cpu/zegar: 0.000778 / 0.001 / 0.000784
Na podstawie tego prostego ćwiczenia zauważamy, że nawet operacja mnożenia liczb zmiennoprzecinkowych jest szybciej wykonywana niż operacje wejścia wyjśćia.