lab3.pdf
(
79 KB
)
Pobierz
1874430 UNPDF
do zdobycia:
[0 pkt]
Interfejsy programowe systemów operacyjnych – laboratorium 3
Przypomnij sobie wiedzę, którą zdobyłeś na wykładzie w temacie programów
nm
i
make
.
W razie amnezji zajrzyj na
http://tiny.pl/jh9b
.
Na dzisiejszym laboratorium zastosujemy tę
wiedzę w praktyce, aby zdobyć punkty na wejściówce (na kolejnych zajęciach).
Skopiuj zawartość katalogu
~jaca/IPSO/make
(na olimpie) do katalogu w swoim katalogu
domowym. W środku znajdziesz cztery pliki będące modułami trywialnego programu:
●
main.cpp
– program główny,
●
modul1.cpp
– moduł w C++, dostarczający definicji funkcji
f(double x)
,
●
modul2.c
– moduł w C, dostarczający definicji
g(double x)
,
●
modul3.f
– moduł w FORTRANie, dostarczający definicji funkcji
h(double x)
.
Zwróć uwagę na trzy rzeczy:
●
Funkcje wykorzystywane przez
main.cpp
muszą posiadać prototypy, tj. w momencie
kompilacji
main.cpp
kompilator musi mieć informację, że gdzieś (bo nie w
main.cpp
)
zostały zdefiniowane funkcje
f
,
g
,
h
. Do skompilowania
main.cpp
wystarcza informacja, że
te funkcje istnieją i mają takie a takie sygnatury. W przypadku funkcji w C++ wystarczy
podać jej prototyp, poprzedzając go kwalifikatorem
extern
. W przypadku funkcji w C i
w FORTRANie po
extern
piszemy
"C"
, co instruuje kompilator że wołana funkcja nie jest
funkcją C++. Dodatkowo dla FORTRANu obowiązują inne zasady maglowania nazw, co
skutkuje – zazwyczaj – koniecznością dodania "
_
" (podkreślenia) po wszystkich nazwach
funkcji, stąd wywołanie
h_()
zamiast
h()
.
●
FORTRAN przekazuje parametry przez adres, dlatego mimo że funkcja
h()
bierze argument
typu
double
deklarujemy ją jako
h(double*)
i wołamy analogicznie (nie przejmujemy się
tym niuansem, koncentrujemy się na
make
i
nm
).
●
Do każdego z modułów trzeba dobrać właściwy kompilator – programy w FORTRANie na
olimpie kompilujemy za pomocą
g77
, programy w C za pomocą
gcc
, programy w C++ za
pomocą
g++
. Linkowania dokonujemy za pomocą C++, aby automatycznie zostały włączone
biblioteki właściwe dla C++.
Pierwsza część Twojego zadania na dzisiaj to stworzenie pliku
Makefile
, dzięki któremu
będzie można skompilować cały program, wydając polecenie
make
. Posłuż się wzorem omawianym
na wykładzie. Sprawdź, czy Twój program kompiluje się i czy działa.
Sprawdź, jakie symbole zdefiniowane są wewnątrz każdego z plików wynikowych (*.o)
i samego programu po kompilacji, korzystając z
nm
. Zobacz jak wyglądają nazwy przemaglowane
(
nm
) i odmaglowane (
nm -C
). Które z kompilatorów maglują nazwy, a które nie? Sprawdź, czy po
kompilacji z opcją
-g
możliwe jest (za pomocą nm
-lC
) sprawdzenie numerów linii w których
zdefiniowane są konkretne symbole.
Na następnych zajęciach wykorzystasz przećwiczoną w praktyce wiedzę na wejściówce!
2007, Jacek Dziedzic; FTiMS, Politechnika Gdańska.
Plik z chomika:
inf4
Inne pliki z tego folderu:
Makefile
(0 KB)
lab9.exe
(122 KB)
lab2.jpg
(715 KB)
lab1.jpg
(1034 KB)
przyklad.exe
(40 KB)
Inne foldery tego chomika:
Wyklad
Zgłoś jeśli
naruszono regulamin