kompilacja podstawy

background image

Podstawy Informatyki (semestr I)

laboratorium 3

1

Kompilacja i scalanie programów C w linii polece

ń

(LINUX)

Uwaga!
W poni

ż

szym tek

ś

cie ka

ż

de wyra

ż

enie typu <x> oznacza miejsce wstawienia odpowiedniej nazwy

opisywanej przez x. Symbol [x] oznacza wyst

ę

powanie x zero lub jeden raz.

Kompilowanie plików

ź

ródłowych C do postaci plików obiektów wymaga u

ż

ycia opcji „-c”.

gcc -c <nazwa_pliku>.c

W wyniku otrzymuje si

ę

plik obiektu

<nazwa_pliku>.o

Je

ś

li plik nagłówka (.h) nie znajduje si

ę

w bie

żą

cym katalogu ani w

ż

adnym z katalogów zawieraj

ą

cych

nagłówki standardowych bibliotek to przy kompilacji stosowana jest opcja –I <katalog_naglowka> .
(du

ż

e 'i')

gcc –c –I <katalog_naglowka> <nazwa_pliku>.c

Aby wytworzy

ć

kod produkcyjny korzystamy z ustawienia 3 poziomów optymalizacji poprzez opcj

ę

„-

Ox” (x=0,1,2.3). Poziom „-O2” jest odpowiedni dla wi

ę

kszo

ś

ci programów.

Scalanie plików obiektów w program wykonywalny wymaga u

ż

ycia opcji „-o”

gcc –o <nazwa_celu> <nazwa_pliku1>.o <nazwa_pliku2>.o …

<nazwa_celu> oznacza nazw

ę

pliku wykowywalnego, która mo

ż

e, ale nie musi mie

ć

ż

adnego

konkretnego rozszerzenia (takiego jak np. „exe” w systemie Windows).
W wielu systemach uniksowych mo

ż

na poł

ą

czy

ć

kompilacj

ę

i scalanie plików w jednym poleceniu:

gcc –o <nazwa_celu> <nazwa_pliku1>.c <nazwa_pliku2>.c …

Archiwum (bilbioteka statyczna) to zestaw wielu plików obiektów przechowywanych w pojedynczym
pliku o rozszerzeniu „.a”. Tworzy si

ę

je poleceniem „ar” z opcjami „cr”:

ar -crs lib<nazwa_bilbioteki>.a <nazwa_pliku1>.o <nazwa_pliku2>.o …

Archiwum doł

ą

cza si

ę

na etapie scalania plików obiektów w program wykonywalny z wykorzystaniem

opcji „-L” i „-l”. (małe 'el')
„-L<nazwa_katalogu>”: wskazuje poło

ż

enie niestandardowe pliku biblioteki – poza typowo

przeszukiwanymi katalogami „/lib”, „/usr/lib” i katalogami opisanymi w

ś

cie

ż

kach zmiennej

ś

rodowiskowej „LD_LIBRARY_PATH”.

„-l<nazwa_biblioteki>”: opcja scalania wybranej biblioteki z naszym programem wykonywalnym
(celem).
gcc –o <nazwa_celu> <nazwa_pliku1>.c <nazwa_pliku2>.c … -L<nazwa_katalogu_biblioteki>
-l<nazwa_biblioteki>

background image

Podstawy Informatyki (semestr I)

laboratorium 3

2

Kompilacja i scalanie programów C poprzez polecenie „make” (LINUX)

Polecenie „make” szuka w bie

żą

cym katalogu pliku tekstowego o nazwie „makefile” lub „Makefile” w

podanej kolejno

ś

ci. Plik ten zawiera reguły opisuj

ą

ce dla „make” co budowa

ć

(wykonywa

ć

) i w jaki

sposób. Reguły pliku make maj

ą

nast

ę

puj

ą

c

ą

form

ę

ogóln

ą

:


<nazwa_celu>: <zale

ż

no

ść

> [<zale

ż

no

ść

>] […]

<tabulator> <polecenie>
[<tabulator> <polecenie>]
[…]

Cel jest plikiem binarnym(wykonywalnym) lub obiektowym (.o), który chcemy utworzy

ć

.

Polecenia s

ą

krokami takimi jak wywołania kompilatora lub polece

ń

powłoki koniecznymi dla

utworzenia celu.
Je

ś

li cel nie istnieje „make” go buduje zgodnie z poleceniem. W przeciwnym razie porównuje daty

tworzenia celu z datami jego zale

ż

no

ś

ci. Je

ś

li s

ą

one pó

ż

niejsze ni

ż

cel (przynajmniej jedna) cel

podlega przebudowaniu, bo zmienił si

ę

jaki

ś

kod.

Przykład:

prog.e: m1.o m2.o
gcc –o prog.e m1.o m2.o

m1.o: m1.c m1.h
gcc –c m1.c

m2.o: m2.c m1.h
gcc –c m1.c

clean:
rm *.o *.e

Wybrane zmiene automatyczne stosowane w plikach “make”:
$@ -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” sa przypisywane ró

ż

nym poleceniom na pocz

ą

tku skryptu.

Przypisanie takie (nierekursywne) ma posta

ć

:

<zmienna>:=<polecenie lub warto

ść

>

np. :
CC := gcc
CFLAGS := -g

Odwołanie do takich zmiennych wyst

ę

puje w formie $(<zmienna>)

np. :
$(CC)
$(CFLAGS)

Ogólna reguła kompilacji plików

ź

ródłowych C w poleceniu „make” z u

ż

yciem zmiennych

automatycznych mo

ż

e mie

ć

posta

ć

:


.c.o:
$(CC) $(CFLAGS) –c $*.c


background image

Podstawy Informatyki (semestr I)

laboratorium 3

3

B

ę

dzie ona niejawnie cytowana przy tworzeniu celu:


<plik_wykonywalny>: <plik>.o <plik>.o …
$(CC) $(CFLAGS) $^ -o $@

<plik>.o: <plik>.c <plik>.c …
<plik>.o: <plik>.c <plik>.h …

Przykład prostego pliku ”Makefile” z u

ż

yciem reguł niejawnych, zmiennych lokalnych i zmiennych

automatycznych:

CC := gcc
CFLAGS := -g

.c.o:
$(CC) $(CFLAGS) –c $*.c

prog.e: m1.o m2.o
$(CC) $(CFLAGS) $^ -o $@

m1.o: m1.c m1.h
m2.o: m2.c m2.h

clean:
rm –f *.o *.e

W jednym pliku „Makefile” mo

ż

na definiowa

ć

wiele ró

ż

nych celów – kompilowa

ć

i scala

ć

wiele

programów. Wywołanie „make” odbywa si

ę

z odpowiednim parametrem stanowi

ą

cym nazw

ę

celu i

mo

ż

e zawiera

ć

opcje:


make [-<opcje>] <nazwa_celu lub plik_wykonywalny>
np.:
make prog.e
make clean.

Wybrane opcje polecenia “make”(nie musz

ą

wyst

ę

powa

ć

):

-n : polecenia s

ą

składane i wy

ś

wietlane, ale nie wykonywane (dobre do testów)

-I <katalog> : katalog do poszukiwania plików make poza katalogiem bie

żą

cym (du

ż

e 'i')

-s : (silent) make nie wypisuje polece

ń

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)

Uwaga!
W systemie UNIX BSD nale

ż

y zastosowa

ć

polecenie gmake (GNU make) aby móc budowa

ć

pliki

„make” w formie charakterystycznej dla Linuxa.

background image

Podstawy Informatyki (semestr I)

laboratorium 3

4

Zadania do wykonania

Celem

ć

wiczenia jest opanowanie umiej

ę

tno

ś

ci kompilacji i uruchamiania programów konsolowych C

w systemie UNIX/Linux.

1. Zalogowa

ć

si

ę

na własne konto na serwerze Katedry Informatyki Stosowanej poprzez

WinSCP i rozpocz

ąć

prac

ę

w konsoli.

2. Utworzy

ć

w podkatalogu „programy” pliki

ź

ródłowe j

ę

zyka C -„main.c”, „modul.c” oraz plik

nagłówkowy „modul.h”. Wpisa

ć

przy pomocy dowolnego edytora tre

ś

ci plików podane

studentom przez prowadz

ą

cego laboratorium. Tre

ś

ci zawieraj

ą

napisy powitalne j

ę

zyka C

wy

ś

wietlane w konsoli.

3. Skompilowa

ć

pliki

ź

ródłowe C przy pomocy polecenia „gcc” z opcj

ą

„-c” w celu uzyskania

plików obiektów (.o). Utworzy

ć

plik programu wykonywalnego „witaj.e” poprzez scalanie

wytworzonych plików obiektów poleceniem „gcc” z opcj

ą

„–o”. Uruchomi

ć

program.

4. Skompilowa

ć

i scali

ć

powy

ż

sze pliki

ź

ródłowe w program wykonywalny jednym poleceniem

„gcc”, bez etapu po

ś

redniego wytwarzania plików obiektów. Uruchomi

ć

program.

5. Przemie

ś

ci

ć

nagłówek „modul.h” do katalogu nadrz

ę

dnego dla katalogu „programy” i

wykorzysta

ć

opcj

ę

„-I” (du

ż

e 'i') polecenia „gcc” do ustalenia jego poło

ż

enia. Sprawdzi

ć

działanie opcji „-O”, „-W”, „-ansi” w procesie kompilacji i scalania.

6. Utworzy

ć

archiwum statyczne „libmodul.a” z pliku „modul.o” przy pomocy polecenia „ar” z

odpowiednimi opcjami. Skompilowa

ć

i scali

ć

„witaj.e” poleceniem „gcc” z opcjami „-L” oraz „-l”

(małe 'el') słu

żą

cymi do podł

ą

czania biblioteki. Uruchomi

ć

program z podł

ą

czon

ą

bibliotek

ą

statyczn

ą

.

7. Utworzy

ć

w katalogu bie

żą

cym plik „makefile” zawieraj

ą

cy dwa cele:

witaj.e” – kompilacja i scalanie programu wynikowego o nazwie zgodnej z nazw

ą

celu, w

oparciu o

ź

ródła C z punktu 2

clean” – usuni

ę

cie z bie

żą

cego katalogu wytworzonych plików obiektów (.o) i pliku

wykonywalnego
Opisa

ć

cel:

a) bez

ż

adnych zmiennych automatycznych,

b) z u

ż

yciem wybranych zmiennych („$@, $<,$^,$?”)

Zastosowa

ć

predefiniowan

ą

nazw

ę

kompilatora, zdefiniowa

ć

własne nazwy wewn

ę

trzne opcji i

kompilatora.

8.

Wykona

ć

przygotowane zadania „make” poleceniem:

make <opcje> <nazwa celu> (dla LINUX)
gmake <opcje> <nazwa celu> (dla UNIX BSD)
bez u

ż

ycia

ż

adnych opcji; nast

ę

pnie sprawdzi

ć

działanie opcji „-k”, „ I” (du

ż

e 'i'), „-d”.


Wyszukiwarka

Podobne podstrony:
Podstawowe zasady udzielania pomocy przedlekarskiej rany i krwotoki
Farmakologia pokazy, Podstawy Farmakologii Ogólnej (W1)
Podstawy fizyczne
CZLOWIEK I CHOROBA – PODSTAWOWE REAKCJE NA
Podstawy elektroniki i miernictwa2
podstawy konkurencyjnosci
KOROZJA PODSTAWY TEORETYCZNE I SPOSOBY ZAPOBIEGANIA
PODSTAWOWE ZABIEGI RESUSCYTACYJNE (BLS) U DZIECI
01 E CELE PODSTAWYid 3061 ppt
Epidemiologia jako nauka podstawowe założenia
PODSTAWY STEROWANIA SILNIKIEM INDUKCYJNYM
06 Podstawy syntezy polimerówid 6357 ppt
4 socjalizacja jako podstawowy proces spoeczny
Podstawy MN 2007
Podstawy zzl 3

więcej podobnych podstron