mkdep 24.05.2019

Seznámení se základními principy operačního systému UNIX, převážně z uživatelského hlediska. Absolvent kurzu by měl být schopen napsat netriviální program v shellu.
gortibaldikosice

mkdep 24.05.2019

Příspěvek od gortibaldikosice »

No dnes nám dal vytvoriť niečo, čo sa volá mkdep.
Ste v adresári, kde sú všetky súbory buď typu .c alebo .h .
1 ) Prvou vašou úlohou je prečítať všetky súbory .c , v nich nájsť riadky :
#include "niečo.h"
/aj tie úvodzovky hrajú rolu/
pričom vašou úlohou je nájsť všetky hlavičkové (.h) súbory, ktoré daný zdroják (.c) potrebuje.
Hlavičkové súbory sa samozrejme nachádzajú aj v zdrojákoch .h, teda musíte postupne rekurzívne všetky tieto zdrojáky prechádzať.
Zároveň je potrebné odlíšiť "hlavný" zdroják.c od tých vedľajších (čo spoznáte podľa toho, že v ňom je riadok " *int main *\(" )

2 ) Následne je potrebné skompilovať zdrojový súbor .c ( príkaz cc -c "subor.c") , čím sa vám vytvoria tzv object files (teda skompilovaním
"subor.c" sa vytvorí "subor.o") Použijete špeciálny príkaz :
nm -g "subor.o"
ktorý vám na riadkoch
hex_číslo T názov
hex_číslo D názov
U názov
vo výstupe povie, pre každý object file : T - ktoré funkcie ponúka D - ktoré globálne premenné ponúka U - čo má medzi svojimi unresolved premennými/funkciami
vy potrebujete pre každý súbor .o nájsť jeho dependency tree (to znamená, nájsť všetky object filey, ktoré obsahujú definície toho, čo má súčasný object file medzi
unresolved)

Čo má byť výstupom vašeho kódu :
subor : subor.o druhy_subor.o treti_subor.o ...... (tento riadok - hlavný súbor .o (ten, ktorý má v tele int main) závisí na sebe, druhy_subor.o ..... nájdete v kroku 2) )
cc -o subor.o druhy_subor.o ..... (ten istý riadok, len iný začiatok...)
subor.o : subor.c hlavicka_jedna.h hlavicka_dva.h .... (pre každý object file všetky hlavičky, na ktorých je závislý (nájdete v kroku 1) )
cc -c subor.c


Takže v súhrne. Rekurzívne prehľadáte všetky zdrojáky "hlavičkovo" spojené so súbor.c . Vypíšete ich vo formáte ako vyššie. Skompilujete súbor.c.
-- toto urobíte for subor in *.c
Prejdete všetky subor.o (ktoré ste skompilovali v prvom kroku) a vypíšete ten druhý výstup podľa dependencies.

(Forst mal veľmi dobrú náladu, prišiel v košeli, len o 20 minút neskôr)
Odpovědět

Zpět na „SWI095 Úvod do UNIXu“