Kompilace Makele C++ Zadání úlohy. Kompilace a Makele. OSD. O. Fi²er. April 18, O. Fi²er Kompilace, Makele

Podobné dokumenty
Cílem kapitoly je seznámit studenta se strukturou programu a jeho překladem.

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

C++ Akademie SH. 2. Prom nné, podmínky, cykly, funkce, rekurze, operátory. Michal Kvasni ka. 20. b ezna Za áte níci C++

Integrování jako opak derivování

C/C++ projekt v programu NetBeans

Sazba zdrojových kód. Jakub Kadl ík

Skalární sou in. Úvod. Denice skalárního sou inu

P íklad 1 (Náhodná veli ina)

e²ení systém lineárních rovnic pomocí s ítací, dosazovací a srovnávací metody

Vektor náhodných veli in - práce s více prom nnými

Informace a návod k pouºití ablony pro BP student FZS v Plzni. Ing. Petr V elák 20. únor 2012

Základy programování (IZP)

3 Vývojová prostředí, základní prvky jazyka Java, konvence jazyka Java

Algoritmizace a programování

Specifikace systému ESHOP

BOZP - akcepta ní testy

Konceptuální modelování

Základy programování (IZP)

Obsah. Obsah. Úvod Makra v Excelu Nahrávání maker První setkání s editorem jazyka Visual Basic... 31

simphoto verze Manuál k aplikaci Autor: Datum:

Vektory. Vektorové veli iny

Dotazování nad stromem abstraktní syntaxe

Binární operace. Úvod. Pomocný text

Uºivatelská p íru ka Octopus

Uºivatelská p íru ka k programu SlaFoR verze 1.0

Koncepce (větších) programů. Základy programování 2 Tomáš Kühr

PARADIGMATA PROGRAMOVÁNÍ 2A MAKRA I

Preprocesor a koncepce (větších) programů. Úvod do programování 2 Tomáš Kühr

Obsah. Úvodem 9 Komu je kniha určena 9 Forma výkladu 9 Konkrétní postup výuky 10 Příklady ke knize 11

Programování mikroprocesor AVR v jazyce C. Ji í Bourek 16. kv tna 2007

1 Spo jité náhodné veli iny

Derivování sloºené funkce

IP kamerový systém Catr - uºivatelský návod k obsluze

Základy programování (IZP)

Pr b h funkce I. Obsah. Maxima a minima funkce

Limity funkcí v nevlastních bodech. Obsah

Algoritmizace a programování

Text m ºe být postupn upravován a dopl ován. Datum poslední úpravy najdete u odkazu na staºení souboru. Veronika Sobotíková

PROGRAMOVÁNÍ V C++ CVIČENÍ

Teorie her. Klasikace. Pomocný text

1. Spo t te limity (m ºete pouºívat l'hospitalovo pravidlo) x cotg x 1. c) lim. g) lim e x 1. cos(x) =

MATLB: p edná²ka 1. Prom nné, indexování a operátory. TECHNICKÁ UNIVERZITA V LIBERCI Fakulta mechatroniky, informatiky a mezioborových studií

Programování - úvod. Programování. Proces programování. Vlastnosti dobrého programu: Kapitola seznamuje se základními pojmy programování.

Prostory jmen. #include<iostream.h> namespace RadimuvProstor { int secti(int a, int b); class Trida { private: int Atribut; public: void metoda();

Úvod Petr Kropík viz:

Fyzikální praktikum 3

Rozhodněte se, co budete dál dělat

Team Engineering. New in V13. TIA Portal news. Restricted / Siemens AG All Rights Reserved.

IUJCE Přednáška č. 11. další prvky globální proměnné, řízení viditelnosti proměnných, funkcí

Restaurace-ng. documents/dmetqytlor37kpeje5dax/download/restaurace_aplikace.part1.

DYNATECH DYNAMICS & TECHNOLOGY, S.L. nebude zodpov dný za žádné poškození zp sobené nedodržením výše uvedených základních údaj.

Programový komplet pro evidence provozu jídelny v modul Sklad Sviták Bechyně Ladislav Sviták hotline: 608/

Úvod do jazyka C. Úvod do jazyka C. Knihy 2/2. Knihy 1/2. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze.

PARADIGMATA PROGRAMOVÁNÍ 2A MAKRA III

Statistika pro geografy. Rozd lení etností DEPARTMENT OF GEOGRAPHY

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Reálná ísla a posloupnosti Jan Malý

2. Ur íme sudost/lichost funkce a pr se íky s osami. 6. Na záv r na rtneme graf vy²et ované funkce. 8x. x 2 +4

Návrh va kových prol - CamEdit Uºivatelská p íru ka

Seznámení žáků s pojmem makra, možnosti využití, praktické vytvoření makra.

Marketing. Modul 5 Marketingový plán

Operační systémy. Cvičení 3: Programování v C pod Unixem

Charakteristika kurzu BE4

Preprocesor. Karel Richta a kol. katedra počítačů FEL ČVUT v Praze. Karel Richta, Martin Hořeňovský, Aleš Hrabalík, 2016

Zdroje Úvod Zápis a kompilace programu Příklad programu v jazyce C Příklad programu s výstupem. Úvod do jazyka C. Jan Faigl

DTP Základy programování Úvod do předmětu

Základní praktikum laserové techniky

Kelvin v kapkový generátor

IUJCE 07/08 Přednáška č. 1

Pokyny k vyplnění Průběžné zprávy

SQL - úvod. Ing. Michal Valenta PhD. Databázové systémy BI-DBS ZS 2010/11, P edn. 6

Termíny zkoušek Komise Komise. subkomise 1 (obhaj.) :30 B subkomise 2 (obhaj.) :30 B8 120

Zadávací dokumentace

Úvod do jazyka C. Ing. Jan Fikejz (KST, FEI) Fakulta elektrotechniky a informatiky Katedra softwarových technologií

2C Tisk-ePROJEKTY

Kočí, R.: Účelové pozemní komunikace a jejich právní ochrana Leges Praha, 2011

Modelování v elektrotechnice

Daňová partie. Aktuality z oblasti řešení daňových sporů. 5. května Finanční úřady nově jen v krajských městech

účetních informací státu při přenosu účetního záznamu,

Vývoj programů. ÚVOD DO OPERAČNÍCH SYSTÉMŮ

DeepBurner (testování UI)

MIKROPROCESORY PRO VÝKONOVÉ SYSTÉMY

Obsah. Pouºité zna ení 1

-1- N á v r h ČÁST PRVNÍ OBECNÁ USTANOVENÍ. 1 Předmět úpravy

Soft Computing (SFC) 2014/2015 Demonstrace u ení sít RCE, Java aplikace

Prezentace. Ing. Petr V elák 6. b ezna 2009

IMUNITNÍ SYSTÉM NAŠE TĚLESNÁ STRÁŽ

Krajská hospodářská komora Střední Čechy. Pravidla soutěže. Poznáváme firmy ve středních Čechách. 1. Pořadatel soutěže. 2. Termín konání soutěže

Rovnice a nerovnice. Posloupnosti.

1. kolo soutěže probíhá: od :00:00 hod do :59:59 hod

Náležitosti nutné k zahájení znaleckých úkonů

MOBILNÍ KOMUNIKACE STRUKTURA GSM SÍTĚ

11. Přehled prog. jazyků

Programovací jazyk C(++) C++ area->vm_mm->locked_vm -= len >> PAGE_SHIFT;

Návod pro vzdálené p ipojení do sít UP pomocí VPN pro MS Windows 7

Algoritmy I. Cvičení č. 2, 3 ALGI 2018/19

Základy programování (IZP)

ízení Tvorba kritéria 2. prosince 2014

Úvod do jazyka C. Proč jazyk C

dostat zdroják Petr Zemek Fakulta informačních technologií VUT v Brně izemek

Transkript:

a. OSD O. Fi²er April 18, 2011

Obsah 1 2 3 4

Compiler - p eklada program, který vezme zdrojový text programu a p eloºí jej do jazyka stroje, coº jsou obvykle kódy instrukcí pro daný procesor. Výsledkem tohoto p ekladu obvykle není spustitelný program, protoºe v místech volání podprogram z jiných modul a knihoven nejsou konkrétní adresy t chto podprogram, ale pouze zna ky, které se zpracují pozd ji p i linkování. Soubor m, které produkuje p eklada se íká objektové soubory (nemá to nic spole ného s objektov orientovaným programováním). D leºitou funkcí p eklada e je syntaktická kontrola.

Linker - sestavení programu slouºí k sestavení samostatn p eloºených modul a knihoven do funk ního celku. Linker do kódu doplní konkrétní adresy podprogram (statický p eklad) nebo kód pro jejich zavolání (p i pouºití dynamických knihoven). Pokud vytvá íme spustitelný program (u knihoven to je trochu jinak), linker nakonec doplní do programu kód, který se pouºívá p i spu²t ní programu. Tato ást, stejn jako formát pouºitých statických nebo dynamických knihoven se li²í v závislosti na pouºitém opera ním systému a hardwarové platform. Pokud proto chceme vyrobit spustitelný program pro jinou platformu, musíme u jazyk typu C, provést p eklad na zvolené platform znovu. institution-log

Debugger program pro lad ní a hledání chyb v programu. Aby m lo lad ní s debuggerem smysl, je obvykle nutné íci p eklada i, aby do výsledného kódu p idal speciální zna ky, díky nimº si debugger bude um t spojit konkrétní ást binárního kódu programu s konkrétními ádky zdrojového textu.

Preprocessor speciální program pouºívaný v jazycích C a pro zpracovávání maker a symbolických konstant. Tento program v podstat provádí pouze textové náhrady denovaných symbol v textu a umoºnuje podmín ný p eklad. P íkazy pro preprocessor za ínají vºdy znakem m íºky (#), nap íklad #dene nebo #ifndef. P íkazy preprocessoru byste m li pouºívat co nejmén.

Assembler program pro p eklad jazyka symbolických instrukcí do binárního kódu. N kdy bývá nesprávn zam ován se samotným jazykem symbolických instrukcí, coº je vemi nízkoúrov ový jazyk, kde zdrojový kód tvo í posloupnost zkratek instrukcí procesoru. P i velmi speciálních p íleºitostech lze jazyk symbolických instrukcí kombinovat s kódem v jazyce C. Velmi speciální situace zahrnují p ístup k nejniºsím úrovním hardwaru a brutální optimalizace. P i b ºném programování se s tím nesetkáte (a ani by to v t²inou nebylo prosp ²né).

Syntaktická chyba proh e²ek proti gramatice programovacího jazyka. Po íta je matematický stroj a vyºaduje naprosto jednozna ný p edpis své innosti. Ve zdrojovém kódu nesmí být ºádné syntaktické chyby, aby bylo jednozna né, co má p eklada d lat. P eklada neví, co chcete naprogramovat, proto se nem ºe ani pokou²et o opravu va²ich chyb, to musíte ud lat sami. Mezi syntaktické chyby pat í p edev²ím p eklepy, ale m ºe to být také pouºití nekompatibilních datových typ nebo t eba chybné pouºití operátor (nap. nem ºete zkou²et násobit textové et zce).

Sémantická chyba chyba v logice va²eho programu. Vá² program m ºe být syntakticky správný, p eklada jej p eloºí, linker slinkuje, ale program p esto m ºe fungovat chybn. Za tyto chyby je vºdy zodpov dný programátor a je na n m, aby se jich zbavil. Tyto chyby p eklada ani linker neodhalí. Pokud máte ²t stí, m ºe na n p eklada nep ímo upozornit pomocí varovných hlá²ení p i p ekladu.

Chybové hlá²ení - error zpráva, kterou vám p eklada nebo linker sd lují, pro nelze z va²eho kódu vytvo it spustitelný program. Tato zpráva obvykle obsahuje jméno souboru a íslo ádku, kde se chyba nachází. Pozor! V jazyce C m ºe n kdy p eklada odhalit chybu na jiném ádku, neº je skute ná p í ina. Pokud se vám ozna ené íslo ádku nezdá, zkuste hledat chybu i n kolik ádk okolo. Abyste mohli co nejlépe lokalizovat své chyby, pi²te na kaºdý ádek zdrojového textu maximáln jeden p íkaz. Usnadníte si tím nejen lokalizaci chyb, ale i lad ní. Chybové hlá²ení obsahuje také vysv tlení, co je podle p eklada e ²patn. institution-log

Varovné hlá²ení - warning upozorn ní, kterým vám p eklada nebo linker dávají najevo, ºe vá² program sice moºná jde p eloºit, ale ºe obsahuje podez elé konstrukce, které mohou nazna ovat závaºn j²í problém. Moudrý programátor v nuje varovným hlá²ením p eklada e náleºitou pozornost. Va²í ambicí by m l být p eklad bez varovných hlá²ení. Dobré porozum ní chybovým hlá²ením vyºaduje znalost angli tiny a p edev²ím dobrou znalost fungování po íta e a logiky programovacího jazyka. Pokud zatím tyto znalosti nemáte, nezoufejte. Není tak t ºké se to nau it. ƒím více budete programovat, tím to pro vás bude snaz²í.

Make Program make je utilita pro automatizaci p ekladu zdrojových kód do binárních soubor (spustitelné soubory ELF, EXE, knihovny a podobn ). Soubor nazvaný ur uje postup utility make p i p ekladu a denuje závislosti mezi zdrojovými soubory. P i sestavování cíle sleduje make topologické se azení v. P estoºe jsou dnes v oblib r zná integrovaná vývojová prost edí (IDE) a jazykov specické kompilátory, je make a tedy i stále ²iroce vyºíván, zvlá²t pak na unixových platformách.

Ru ní kompilace. Napi²te si jednoduchý 'Hello word' program #include <stdio.h> int main(){ printf("hello World!\n); return 0; }. A p eloºte jej: g++ main.c -o hello Spu²t ním programu se na stdout vypí²e 'Hello World!' institution-log

Základní. Základní struktura je: target: dependencies [tab] system command Pro ná² p ípad tedy:. all: g++ main.c -o hello Pro spu²t ní vytvo te soubor, vypl te strukturu a spus t program 'make' institution-log

Pouºití závislostí. N kdy je vhodné pouºít více cíl. Pokud zm níte jen jeden soubor v projektu, nebudete muset rekompilovat v²e, ale pouze ten upravený. all: hello hello: main.o factorial.o hello.o g++ main.o factorial.o hello.o -o hello main.o: main.cpp g++ -c main.cpp factorial.o: factorial.cpp g++ -c factorial.cpp hello.o: hello.cpp g++ -c hello.cpp clean: rm -rf *.o hello V²imn te si cíle 'clean', ten slouºí k odstran ní v²ech generovaných soubor. institution-log

Prom nné a komentá e. # Promenna CC bude jmeno kompileru, ktery se pouzije CC=g++ # CFLAGS budou parametry, pouzite pri kompilaci CFLAGS=-c -Wall all: hello hello: main.o factorial.o hello.o $(CC) main.o factorial.o hello.o -o hello main.o: main.cpp $(CC) $(CFLAGS) main.cpp factorial.o: factorial.cpp $(CC) $(CFLAGS) factorial.cpp hello.o: hello.cpp $(CC) $(CFLAGS) hello.cpp clean: rm -rf *.o hello Prom nné mohou celý kód zp ehlednit a zjednodu²it. institution-log

Parametry kompilace man gcc -Wall = warnings on -pedantic = p ísná kontrola syntaxe kódu -c = c le -o = object le

dynamické knihovny. Pro zkompilování dynamické knihovny pouºijte následující konstrukci: libneco.so: neco1.o neco2.o... necon.o gcc -shared -o libneco.so neco1.o... necon.o -lm -shared = sdílená dynamická knihovna -lm = pokud knihovna volá funkce jiné knihovny, toto potla í chybovou hlá²ku -fpic = position-independent code - p idat k podmínkám kompilace *.o soubor -L. -lneco = p i kompilaci celého programu p idejte mezi objekty -L. = vloºí knihovnu v adresá i '.' -lname = jméno knuhovny (libneco.so) institution-log

Funkce main. Main je první funkce, která je spu²t na. int main(int argc, char **argv) { TELO } Prom nná argc obsahuje po et vstupních argument Pole argv obsahuje hodnoty argument

#include Vloºení knihovny do kódu:. #include "nd.h" #include "nsd.h" #include <stdio.h> - vyhledává soubor od aktuálního umíst ní souboru se zdrojovým kódem <> - vkládaný soubor vyhledává podle prom nné PATH anebo cest zadaných parametrem -I

For cyklus, if for cyklus. for (int i = 0; i < 20; i++){ TELO } If m ºete pouºít: ==,!=, <= >=, <, > shlukovat podmínky lze pomocí && a i f (i<0){ TELO } institution-log

fprintf Pro vypsání výstupu na stdout. fprintf(hodnota promenne x je %d a y=%d,x,y); %i - integer %d - double %c - char

sscanf Slouºí k p evedení hodnot ze vstupu - parsing. int a; sscanf(argv[1], "%i",&a); Z pole argv, polohy 1, na te integer do promenne a

institution-log Zadání Napi²te program 'main.c' vstupem jsou dva argumenty (dv celá ísla) do programu vloºte (include) poskytnuté dva dva zdrojové kódy (nd.c, nsd.c) výstupem je bu podíl dvou ísel anebo nalezený spole ný d litel Napi²te makele z poskytnutých soubor sestavte knihovnu (libnsd.so) P eloºte Vá² program, knihovnu a vytvo te nální program p idání knihovny do cesty - export LD_LIBRARY_PATH=.

Reference http://www.fit.vutbr.cz/~martinek/clang/gcc.html http://mrbook.org/tutorials/make/