Lab11 Sprawozdanie id 259109 Nieznany

background image

Grupa 12K2

Rafał Linca 6.I.2010

Ćwiczenie Laboratoryjne 11

Sprawozdanie

Sprawozdanie

1.

Wstęp

Celem laboratorium było zapoznanie się z podstawowymi narzędziami

służącymi do kompilacji programów napisanych w języku C.


2. Przebieg

Przed przystąpieniem do ćwiczenia konieczne było doinstalowanie

kompilatora GCC. Należało więc wykonać polecenie:

yum install gcc

Pierwszym zadaniem było przygotowanie kodu źródłowego w pliku licz0.c przy

użyciu edytora vim, do którego wpisaliśmy następującą treść:

1

#include<stdio.h>

2

double kwadrat(double x)

3

{

4

return (x)*(x);

5

}

6

int main(int argc, char* argv[])

7

{

8

double liczba, kw_liczby;

9

printf("Podaj liczbe: ");

10

scanf("%lf", &liczba);

11

kw_liczby=kwadrat(liczba);

12

printf("Jej kwadrat to: %lf\n", kw_liczby);

13

return 0;

14

}


N

astępnie musieliśmy skompilować pliki źródłowe C przy użyciu GCC:


gcc –o <nazwa_pliku_wykonywalnego> <nazwa_pliku_źródłowego_c>

Kolejny program wygląda następująco:

licz1.c:

1

#include<stdio.h>

2

double kwadrat(double x);

3

double szescian(double x);

4

int dodaj(int a, int b);

5

void powitaj(char* dopisek);

6

int main(int argc, char* argv[])

7

{

background image

8

double liczba, kw_liczby;

9

powitaj("matematyki");

10

printf("Podaj liczbę: ");

11

scanf("%lf", &liczba);

12

kw_liczby=kwadrat(liczba);

13

printf("Jej kwadrat to %lf\n", kw_liczby);

14

return 0;

15

}


funkcje.c:

1

double kwadrat(double x)

2

{

3

return (x)*(x);

4

}

5

powitanie.c:

6

#include<stdio.h>

7

void powitaj(char* dopisek)

8

{

9

printf("Witaj w swiecie %s\n", dopisek);

10

}


Należało w tym przypadku połączyć (scalić) dwa pliki .c:
gcc – o <licz1.c>.exe <funkcje.c>.o <powitanie.c>.o

Polecenie make stosowane jest jeśli chcemy wyszukać w bieżącym katalogu pliku
tekstowego o nazwie „makefile” lub „Makefile”. Przykładowy plik Makefile:

1

CC = gcc

2

CFLAGS = -O1

3

Licz1.exe : licz1.o funkcje.o powitanie.o

4

$(CC) $(CFLAGS) -o $@ $?

5

liczh.o : licz1.c

6

$(CC) $(CFLAGS) -c $?

7

funkcje.o : funkcje.c

8

$(CC) $(CFLAGS) -c $?

9

powitanie.o : powitanie.c

10

$(CC) $(CFLAGS) -c $?

11

clean:

12

rm *.o


Wybrane zmienne stosowane w plikach makefile:
$@ -symboliczna nazwa pliku celu w regule
$* -

rdzeń nazwy pliku (bez rozszerzenia po kropce)

$< -

nazwa pliku pierwszej zależności od reguły

$^ -

lista wszystkich zależności w regule

$? -

lista zależności nowszych niż cel

Zmienne lokalne w plikach „make” są przypisywane różnym poleceniom na początku
skryptu.

Wy

brane opcje polecenia “make” (nie muszą występować):

-

n : polecenia są składane i wyświetlane, ale nie wykonywane (dobre do testów)

background image

-

I <katalog> : katalog do poszukiwania plików make poza katalogiem bieżącym (duże

'i')
-s : (silent) make nie wypisuje polec

eń na ekranie

-

f <plik> : nazwa pliku make inna niż „makefile” lub „Makefile”

-

k : nie przerywa działania jeśli nie uda się zbudować jednego z celów

-

d : (debug) wyświetlane są informacje debugowania

-

W<plik> : wykonuje się tak jakby wymieniony plik był zmodyfikowany (do testowania)


Ponadto nauczyliśmy się gdzie znajduje się jądro systemu Linux oraz w jaki sposób
się je aktualizuje.

3. Wnioski:

Linux wyposażony w kompilator gcc daje użytkownikowi systemu prostą i
uniwersalną alternatywę dla środowisk programowania. Dzięki niemu możliwa jest
także modyfikacja poszczególnych narzędzi naszego systemu łącznie z samym
jądrem.

4. Kompilacja jądra systemu (dodatkowo)

Po co kompilować jądro?

Istnieje wiele powodów, dla których ludzie kompilują jądra. Jednym z najczęstszych
to po prostu chęć uaktualnienia swojego systemu. Linux jest bardzo szybko
rozwijającym się systemem, w związku z tym dość często pojawiają się nowe wersje
jąder. Należy jednak pamiętać, że tylko jądra z parzystą środkową liczbą wersji są
uznawane za stabilne. Jądra z nieparzystą liczbą to tzw. jądra rozwojowe
wprowadzające nowe features, które będą wbudowane kiedyś (po przetestowaniu)
do serii stabilnej.

Inny powód samodzielnej kompilacji to chęć posiadania jądra systemu doskonale
dopasowanego do potrzeb konkretnego użytkownika. Można tak skonfigurować
jądro, aby miało wbudowane tylko sterowniki tych urządzeń, które posiadamy, tylko
tych systemów plików, z którymi mamy do czynienia.

Jak to się robi?

Po pierwsze musimy

zdobyć źródła jądra. Oprócz oczywistej możliwości ściągnięcia

ich z sieci, można je wziąć z każdej dystrybucji.

Zdobyty plik tar.gz o nazwie np. linux-

2.0.33.tar.gz i rozmiarach około 7MB do 9MB

należy rozpakować w katalogu /usr/src tak, aby powstał tam
katalog linux

zawierający źródła.

Następnie musimy skonfigurować instalację. Będąc w katalogu /usr/src/linux i będąc
oczywiście zalogowanym jako root piszemy:

make config - s

krypt konfiguracyjny odpali się na konsoli

make menuconfig - wygodna konfiguracja z menu

background image

make xconfig - uruchamia

konfigurację w X

Pytania zadawane przez skrypt konfiguracyjny są na tyle oczywiste, że chyba nie
potrzeba przy tym zaawansownej wiedzy

i doświadczenia. Następnie należy

s

tworzyć zależności:

make dep

...i rozpocząć kompilację....

make zImage

Zwracamy

uwagę na duże i małe litery w słowie zImage. Następnie po około 10

minutach

(w zależności od szybkości procesora) jeśli konfigurowaliśmy jądro jako

modularne, musimy

skompilować moduły oraz zainstalować je:

make modules
make modules_install

Stare moduły siedzące w /lib/modules/numer.starego.jądra/ możemy
potem usunąć, ale na razie zainstalujmy jądro. Jest w jednym podkatalogu
źródeł /arch/i386/boot i nazywa się zImage. Teraz należy dowiedzieć się, gdzie
lilo

szuka jądra. Jest to napisane w /etc/lilo.conf. Najpierw robimy kopię

zapasową poprzedniego działającego jądra w katalogu odszukanym w powyższym
pliku (np. cp vmlinuz vmlinuz-old) i dopiero po zrobieniu kopii nagrywamy do
tego katalogu nasze

jądro. Następnie edytujemy powyższy plik i robimy kopię akapitu

opisującego nasze jądro i wpisujemy label=old i zmieniamy tam vmlinuz na
vmlinuz-old. Jes

t taka zasada, że nazywamy jądro vmlinuz-x.y.z. Po tych

modyfikacjach koniecznie wykonujemy

lilo

Następnie rebootujemy komputer. Jeśli coś nie poszło, to można zresetować i
przy lilo:

wpisać old co wystartuje nam poprzednią wersję jądra.

Wiadomości i pomoc w zrozumieniu tematu kompilacji jądra za stroną:

http://sokrates.mimuw.edu.pl/~sebek/linux-faq-old/faq-2.1-5.html


Wyszukiwarka

Podobne podstrony:
Lab10 Sprawozdanie id 259061 Nieznany
destylacja sprawozdanie id 1342 Nieznany
Lab11 RapidPrototyping id 25910 Nieznany
Czech sprawozdanie 1 id 128290 Nieznany
Czech sprawozdanie 3 id 128292 Nieznany
L04 sprawozdanie1 id 257051 Nieznany
Lab06 Sprawozdanie id 258833 Nieznany
Lab02 Sprawozdanie id 258779 Nieznany
Lab04 Sprawozdanie id 258808 Nieznany
Lab09 Sprawozdanie id 258852 Nieznany
prostownik sprawozdanie id 4022 Nieznany
Lab03 Sprawozdanie id 258792 Nieznany
Projekt sprawozdanie id 399569 Nieznany
cw 21 sprawozdanie I id 100238 Nieznany
Czech sprawozdanie 6 id 128295 Nieznany
46 SPRAWOZDANIE id 38951 Nieznany (2)
EiE wzor sprawozdania id 154403 Nieznany
Cw 6 sprawozdanie4 id 97476 Nieznany
lab6 sprawozdanie id 604266 Nieznany

więcej podobnych podstron