Prevođenje C, C++ i Fortran programa u izvršni kod - GASERI


GNU Compiler Collection (GCC) je najkorišteniji otvoreni skup program-prevoditelja



Onion Details



Page Clicks: 1

First Seen: 03/15/2024

Last Indexed: 09/18/2024

Domain Index Total: 397



Onion Content



Prevođenje C, C++ i Fortran programa u izvršni kod - GNU Compiler Collection (GCC) je najkorišteniji otvoreni skup program-prevoditelja. Clang i LLVM čine alternativu GCC-u. Zadatak - Dodatni zadatak - Izrada biblioteka i povezivanje - Biblioteka (engl. library ) je kolekcija resursa (funkcija, klasa, konstanti, ...) koju programi mogu koristiti. Biblioteke omogućuju višestruko iskorištenje koda. Biblioteke se razlikuju od uobičajenih programa po tome što nemaju funkciju main() . Primjerice, od dvije datoteke bibl1.cpp sadržaja - i bibl2.cpp sadržaja - datoteka zaglavlja bibl.h je oblika - dok datoteka programa mainprog.cpp koji koristi te dvije funkcije može biti oblika - Povezivanje (engl. linking ) podrazumijeva povezivanje s bibliotečnim datotekam. Statičko povezivanje u gornjem primjeru izveli bismo na način: Program ar je arhiver, donekle sličan tar -u koji već poznajemo. On ovdje služi za stvaranje statičke biblioteke, datoteke s ekstenzijom .a . Parametar -L kod g++ -a navodi dodatnu putanju u kojoj treba tražiti biblioteke (pored predefiniranih na sustavu), a parametar -l navodi se jednom ili više puta zajedno s imenom biblioteke na koju je potrebno povezati program. Poredak parametara je značajan; više detalja ima u komentaru Paula Pluzhnikova na temu linking problems and order ( Google grupa gnu.gcc.help ). Modificirajte gornji primjer tako da biblioteka uključuje i datoteku bibl3.cpp sa dvjema funkcijama po vašem izboru čije se deklaracije navode u datoteci zaglavlja i koje se pozivaju u mainprog.cpp . Izvedite prevođenje programa sa statičkim povezivanjem. Dinamičko povezivanje u datotekama primjera izveli bismo na način: Parametar -fPIC osigurava da je strojni kod koji GCC stvara prevođenjem neovisan o o položaju u memoriji , što omogućava dijeljenje istog od većeg broja programa. Biblioteka u primjeru ima verziju 1.0 , što se vidi iz njezinog imena. Simboličke poveznice se stvaraju kako bismo joj mogli pristupiti i programi koji traže istoimenu biblioteku navođenjem samo verzije 1 , te programi koji traže istoimenu biblioteku bez da navode verziju. Varijabla okoline LD_LIBRARY_PATH navodi dodatne putanje (pored onih predefiniranih na sustavu) u kojima je potrebno tražiti biblioteke. Modificirajte gornji slučaj da biblioteka uključuje i datoteku bibl3.cpp sa dvjema funkcijama po vašem izboru čije se deklaracije navode u datoteci zaglavlja i koje se pozivaju u mainprog.cpp . Izvedite prevođenje programa s dinamičkim povezivanjem. Todo - Ovdje treba opisati parametre za GCC koji se odnose na linkanje, alate ldd i readelf , a primjer može biti s Boost bibliotekama filesystem i datetime . Usporedite međusobno dva programa i dvije biblioteke stvorene u prethodna dva zadatka. Alat make - Alat make "automatski" izgrađuje izvršne programe i bibliotečne datoteke iz izvornog koda. make cilj (engl. target ) je imenovani niz naredbi koje su potrebne za izgradnju određene ciljne datoteke (najčešće neke vrste izvršne datoteke) - Makefile se sastoji od jednog ili više ciljeva, koji mogu imati druge ciljeve kao svoje komponente. Napišite jednostavan Makefile za prethodno napisani hello world program, koji sadrži: Makefile varijable slične su varijablama ljuske; primjer: Modificirajte prethodno napisani Makefile , tako da se - Author: Vedran Miletić