Sunteți pe pagina 1din 10

Laborator06CompilareMakefilegcc

Cheatsheet
Comand Descrierescurt compilaresurse utilitarpentrumentenanaunuigrupdeprograme

g c c m a k e

Suportlaborator
11.Compilareilinking[http://books.google.com/books?id=_JFGzyRxQGcC&pg=PA319] 14.6.1Compilareauneiaplicaiidinsurse[http://books.google.com/books?id=_JFGzyRxQGcC&pg=PA484] PuteiurmritutorialulvideocorespunztorlaboratoruluifcutdeITAssistant.
[http://itassistant.org/diverse/utilizareasistemelordeoperare/utilizareasistemelordeoperare11.html]

Arhivlaborator
Sevadescrcadeaici:lab06.tar.gz

Introducere
Compilatorulgcc.
PentruacompilaunfiiersursC,S U R S A . c ,folosimcomandag c c :
s t u d e n t @ u s o : ~ $g c cS U R S A . c

Implicit,executabilulrezultatnurmacompilriisenumetea . o u t . Dacvremscompilmsursaspecificndunnumediferitpentrufiierulexecutabil,adugamparametrulo (output) pentrugcc:


g c cS U R S A . coN U M E _ E X E C U T A B I L

Putemverificadacfiierulesteunulexecutabil,folosindcomandaf i l e pentruaaflattipulacestuia.
s t u d e n t @ u s o : ~ $f i l eN U M E _ E X E C U T A B I L N U M E _ E X E C U T A B I L :E L F6 4 b i tL S Be x e c u t a b l e ,x 8 6 6 4 ,v e r s i o n1( S Y S V ) ,d y n a m i c a l l yl i n k e d( u s e ss h a r e dl i b s ) ,f o rG N U / L i n u x2 . 6 . 2 4 ,B u i l d I D [ s h a 1 ] = 0 x 0 1 4 e d d b 0 e d a b e 6 6 6 f a 4 4 d 6 f f 3 2 4 4 3 a 5 1 2 7 b 2 5 f 0 d ,n o ts t r i p p e d

Pentruarulafiiereleexecutabile,folosimconstrucia. / N U M E _ E X E C U T A B I L .
s t u d e n t @ u s o : ~ $. / a . o u t

Demulteoriosfolosimconstruciigreitecndscriemunprogram,cepotducelabuguri.Unexempluarfi comparaiadintreovariabildetipintiunadetipunsigned.Putemcerecompilatoruluigccsafiezeavertismente nacestecazuri.PentruastafolosimparametrulW a l l (W arningsa l l ):


g c cS U R S A . coN U M E _ E X E C U T A B I LW a l l

Deoareceunprogrampentrucaresuntafiateavertismententimpulcompilriiconine(foarteprobabil)o greeal/unbug,serecomandfolosireaopiuniiW a l l pentrufiecarecompilare. Pentruacas:aflaicefacflagurileW e x t r a iW e r r o r .

Exerciii
1.Gcc
Descrcaiarhivadelaborator.Dezarhivaiofolosindtar. Rezolvare
t a rx fl a b 0 6 . t a r . g z

Rulaicomenzileurmtoare,ndirectorult u t o r i a l / 2 dinl a b 0 6 :
g c coj o b sW a l lh e l l o . c g c cW a l lot u r i n gh e l l o . c g c cW a l lh e l l o . cod i j k s t r a

Utilizndl sl comparaidimensiunilecelor3executabilecreate.Verificaiccele3executabilesuntidentice vizualizndoutputulfiecruia. Faptulcdouexecutabileauaceeaidimensiuneiacelaicomportament(output)nunseamnneapratcele suntidentice. Calculaimd5ulfiecruiexecutabiliverificaicesteidentic. Folosindcomandam d 5 s u m putemobineunrezumatalconinutuluiunuifiier.Acestrezumat,cunoscutisub numeledehash,areproprietateainteresantcceamaimicmodificareposibilnfiieruliniialvaducela modificareacompletamd5ului.Dinacestmotiv,2fiierecuacelaimd5potficonsiderateidentice. ngeneral,ordineaparametrilornuconteaz.Anumiiparametriauargumente.Aiciavemparametrulo .Acest argumenttrebuieurmatntotdeaunadenumeleexecutabilului.

2.Etapelecompilrii
Intraindirectorult u t o r i a l / 3 / 1 .Vizualizaiconinutulfiieruluia n s w e r . c .Rulaicomanda
g c cEa n s w e r . coa n s w e r . i

Cumsamodificatfiierulsursnurmaetapeidepreprocesare?Cetiparefiierulgenerat(folosiif i l e )? Etapadepreprocesarerealizeazsubstituiilanivelulcoduluipentruaexpandamacrouri,aincludefiiereantet, etc.

Intraindirectorult u t o r i a l / 3 / 2 .Vizualizaiconinutulfiieruluia n s w e r . c .Rulaicomanda


g c cSa n s w e r . coa n s w e r . s

Cetiparefiierulgeneratnetapadecompilare? EtapadecompilaretransformcodulCncodnlimbajdeasamblare,dependentdesistemulpentrucareseface compilarea. Folosindg c c efectuaietapadeasamblare:


g c cca n s w e r . soa n s w e r . o

Cetiparefiierulobinut? Etapadeasamblaretransformcodulnlimbajdeasamblarencodmain,codbinarnelesdoardecalculator. Codulrezultatnuestentotdeaunacomplet,deexemplu,ncazulfolosiriiuneifunciidefinitenaltfiier. c adresa acesteifunciinuvaficunoscutnmomentulasamblriifiierului.Eavaficompletatnetapaurmtoare Ultimaetapdinprocesuldecompilareesteceadelinkeditare.Folosindg c c ,invocaiaceastetappentrua obineexecutabilulfinal:


g c ca n s w e r . o

Cefiierafostcreat?Cetipareacestfiier?Rulaiexecutabilul. Etapadelinkeditarepresupunecompletareacoduluimaingeneratnetapaanterioarprinincludereainformaiilor dinaltesursecompilate,biblioteci,etc

3.Makefile
Intraindirectorult u t o r i a l / 4 / 1 .Fiieruls a n d w i c h . c conineunprogramCvalid.Rulai
m a k es a n d w i c h

ivizualizaifiierelecreate(utilizndf i l e pentruavedeatipulacestora).Cecomandafostfolositpentrua compilasursa? AtuncicndunfiierM a k e f i l e nuexistinuestespecificat,m a k e vafolosicomenziimplicitepentrubuild,n funciedeextensiafiieruluiprimitcaparametru.nacestcaz,comandaimplicitafostc cs a n d w i c h . co s a n d w i c h . Intraindirectorult u t o r i a l / 4 / 2 .FiierulM a k e f i l e vafifolositpentruacompilasursas a n d w i c h . c . Rulaicomenzile:
m a k e . / s a n d w i c h

VizualizaifiierulM a k e f i l e .Fiierulconineosingurlinies a n d w i c h : .Aceastaiindicutilitaruluim a k e sexecutetargetuls a n d w i c h .Deoarecenuexistaltceva,sevancercafolosireauneireguliimplicite. Careesteregulaimplicitfolosit?(afiatnterminal).Diferfatdeceaanterioar?

Intraindirectorult u t o r i a l / 4 / 3 .FisierulM a k e f i l e afostcompletatastfelnctsseprecizezeexplicit cesurssecompileaz,pentruaputeadifereniantrecele2surseprezentendirector,s a n d w i c h . c i r e p l y . c .Rulaicomenzileurmtoareiurmriiceseexecut:


m a k e l s r ms a n d w i c h m a k es a n d w i c h l s m a k er e p l y l s . / s a n d w i c h . / r e p l y

Untargetpoateaveaolistdedependene.Acesteasescriupeaceeailinie,dup: . ObservaicdacnuprecizmuntargetsevaexecutaprimulprezentatnMakefile. Modificair e p l y . c adugndporiuneacomentat.Rulaicomenzile


m a k er e p l y m a k er e p l y

Deoarecentrecele2comenzinuammodificatsursa,nusevaexecutanimicpentruadouacomand. Intraindirectorult u t o r i a l / 4 / 5 .FiierulM a k e f i l e afostcompletatastfelnctssepoatconstrui ambeleexecutabilecuaceeaicomandipentruaputeatergetoatefisierelecreatepebazasurselor.Rulai comenzile


l s m a k e l s m a k ec l e a n l s

Pentrutargetulc l e a n sauintrodusiinstruciunilenecesareproduceriiacestuiadindependene.Acesteasepun indentatecuuntabpeliniileimediaturmtoaredefiniriitargetului. Intraindirectorult u t o r i a l / 4 / 6 .FiierulM a k e f i l e esteidenticcuceldinexerciiulanterior(verificaicu d i f fF I I E R _ 1F I I E R _ 2 ).Rulaicomenzile


t o u c hc l e a n l s m a k e l s m a k ec l e a n l s

Verificaicairulatt o u c h

c l e a n !!

Decenuserevinelasituaiainitialafiierelordindirector? RedenumiifiierulM a k e f i l e . g o o d nM a k e f i l e irulaidinnoucomenziledemaisus.Singuradiferen estelinia. P H O N Y :a l lc l e a n . Serecomandincluderean. P H O N Y atuturortargeturilorcenureprezintfiierepentruaprevenisituaiancare unfiiercuacelainumeexistndirectorulcurentitargetulnusevaexecuta. Intraindirectorult u t o r i a l / 4 / 7 .Rulaicomenzileurmtoareiobservaiceseexecut:

m a k es t o r y r ms t o r y m a k es t o r yC F L A G S = W a l l r ms t o r y m a k es t o r yC C = g c c r ms t o r y m a k es t o r yC C = g c cC F L A G S = " W a l lW e x t r aO 3 "

AifolositvariabileM a k e f i l e pentruamodificaregulaimplicit. Unmicgraficcuetapelecompilriiilegturadintreacesteaivariabilelemakefileesteurmtorul

4.Biblioteci.nm.ldd.Legaredinamic/static
Intraindirectorult u t o r i a l / 6 .Compilaisursam a t h . c utilizndg c c :
g c cm a t h . c

Seobservcavemoeroareu n d e f i n e d obiect:

r e f e r e n c et o` s i n h '.Compilaiprogramulpnlamodulul

g c ccm a t h . com a t h . o

Utilitaruln m listeazsimboluriledintrunfiierobiectsaudintrunexecutabil.Rulaicomanda:
n mm a t h . o

Liniilececonin'U'listeazsimbolurilefolositedarnedefinitenm a t h . o .Liniilecu'T'listeazsimboluriledefinite (translatate). Pentruaputeaobineexecutabilulvatrebuisdefinimisimboluls i n h .Funciaestedefinitnbiblioteca matematicl i b m . s o .Pentruadabibliotecacaargumentluig c c pentruetapadelinkeditarevatrebuis folosimargumentull astfel: dinnumelebiblioteciiseeliminextensiaiprefixull i b . cermneseconcateneazlal Rulai:
g c cm a t h . cl m

Compilareareuete.Pentruavedeabibliotecilefolositedeexecutabilvomfolosiunaltutilitarl d d :
l d da . o u t

Folosiiurmtoareacomandpentruacompilasursastatic:
g c cm a t h . cs t a t i cos t a t i c m a t hl m

Comparaidimensiunilefiierelora . o u t is t a t i c m a t h . Executabilula . o u t estemaimicdects t a t i c m a t h ,deoarecenuconinecodulobiectpentrubiblioteca math. Pentruaobservasimboluriledefinitenexecutabilullegatstatic,rulai:


n ms t a t i c m a t h

5.Organizareproiect.Fiieremultiple
CreaifiiereleR E A D M E ,t e m a . c ,u t i l . c ,u t i l . h .Fiierult e m a . c vaincludeheaderulu t i l . h i vadefinifunciam a i n .

u t i l . h esteunheaderlocal,vatrebuislincludeifolosind nu< > .


Rezolvare
t o u c hR E A D M Et e m a . cu t i l . cu t i l . h

tema.c
# i n c l u d e" u t i l . h " i n tm a i n ( ){

r e t u r n0 ;

AdugaiunfiierM a k e f i l e pentrucompilareasursei. Rezolvare


t e m a :

Modificaireguladecompilarepentruacompilaambelefiiere. c . Rezolvare
t e m a :t e m a . cu t i l . c

Puteifolositargeturiintermediare,t e m a . o ,u t i l . o sauputeicreaunsingurtargetcunumeleexecutbilului caresdepinddeceledoufiieresurs.

6.Makepentruautomatizri
Adugaioregulc l e a n pentrutergereafiierelorgenerate. Rezolvare
c l e a n : r m* . ot e m a

Pentrutrimitereatemeisprecorectare,fiierelevorfiarhivate.Adugaioregulp a c k nacestsens.Fiierul arhivsevanumi:t e m a . t a r . g z . Rezolvare


p a c k : t a rc z ft e m a . t a r . g zR E A D M EM a k e f i l et e m a . cu t i l . ct e m a . h

7.Variabilemake
ModificaifiierulM a k e f i l e astfelnctdenumireaarhiveisconinnumelevostruinumelemateriei,uso. Rezolvare
S T U D E N T = i o n . p o p e s c u M A T E R I E = u s o A R H I V A = $ ( M A T E R I E ) _ $ ( S T U D E N T ) p a c k : t a rc z f$ ( A R H I V A ) . t a r . g zR E A D M EM a k e f i l et e m a . cu t i l . cu t i l . h

Definiiovariabilcaresconinnumelefiierelorcevorintranarhiv.Modificairegulap a c k astfelncts depinddefiierelesurs. Rezolvare


F I S I E R E = R E A D M EM a k e f i l et e m a . cu t i l . cu t i l . h p a c k :$ ( F I S I E R E )

t a rc z f$ ( A R H I V A ) . t a r . g z$ ( F I S I E R E )

Extrageidinvariabiladefinitanterior,pecelesursimodificairegulat e m a pentruadepindedoardeele. Rezolvare


S U R S E = t e m a . cu t i l . cu t i l . h F I S I E R E = $ ( S U R S E )R E A D M EM a k e f i l e t e m a :$ ( S U R S E ) . . .

Adugaioregulp a c k _ e x e caresmpachetezentroarhivfiierulexecutabilt e m a .Regulavadepindede ceapentrucompilareaacestuia. Rezolvare


p a c k _ e x e :t e m a t a rc z fe x e . t a r . g zt e m a

8.Codsurs
Pentruacestexerciiu,vatrebuisinstalaipachetulf r e e g l u t 3 d e v . Arhivele. z i p sedespacheteazfolosindcomandau n z i p ,nut a r .

V i m poatefifolositpentrueditareacoduluisurs.Descrcaiidezarhivaiarhiva[http://elf.cs.pub.ro/uso/store/uso
lab3grf.zip]ceconineunmicproiectcefoloseteOpenGL.Scopulacestuiexerciiuestescompilaiacestproiect

utilizndosingursesiunedev i m . SuntnecesarecunotineminimedeC,nuidecompilare. Vedeicereprezint: m a k e ,: c n e x t ,: c p r e v i: c o p e n nv i m ifolosiilepentruacompilaicorecta sursaavnddeschisfiierulf p s . c p p nv i m . Hint:folosii: h (: h e l p pentruaobineindicaii) Rezolvare


$v i mf p s . c p p : m a k e / / E N T E R / / d d( s es t e r g er e d e f i n i i al u iE P S ) : m a k ec l e a n : m a k e

9.Navigareprincodsurs
Pentruacestexerciiu,instalaipachetulc t a g s . Pentruapermitenavigareauoarprincodulsurs,v i m interacioneazuorcuunelteprecumc t a g s i c s c o p e .nexerciiulcurentvomfolosic t a g s ,ncercaisvjucaivoicuc s c o p e . Ieiidinv i m dacnaifcutdejaastairulai

c t a g s*

Seconstruieteunfiiernouncaresegsescinformaiidesprefiecareidentificatordinsurseledindirectorulcurent. Deschideifiierulf p s . c p p
v i mf p s . c p p

Cutaifunciam a i n (hint:/ ). Cutaiapelulfuncieii n i t dincadrulfuncieim a i n .Pentruasriladefiniiafuncieicndneaflmpeapelulei tastmCtrl+]. NavigaipnladefiniiaclaseiK e y b o a r d (gsiioinstanaK e y b o a r d ni n i t saufolosiicutarecu/ ). PentruanentoarcefolosimCtrl+T.ntoarceivnfunciam a i n . CutaidefiniiaclaseiU n i v e r s e dinfunciau p d a t e (pecareogsiiapelatnm a i n ).

10.MaimultevariabileMakefile
Unfeaturealmakesuntv a r i a b i l e l e dinaceastcategorie.

a u t o m a t e (a u t o m a t i cv a r i a b l e s ).$ @ i$ ^ facparte

$ @ seexpandeazlanumeletargetului. $ ^ seexpandeazlalistadependenelorcutotcuspaii.
CompletaiMakefileuldinarhivadelaborator,directorulsimple/2.Fiecareobiectsevacreaindependent. Folosiivariabilele$ @ i$ ^ .Deexemplu,pentrutargetulbignum.ovomscire:
b i g n u m . o :b i g n u m . c $ ( C C )$ ( C C F L A G S )co$ @$ ^

nplus,putemfolosiregulidepatternmatching,astfel,vomscrieunsigurtargetpentruageneratoateobiectele:
% . o :% . c $ ( C C )$ ( C C F L A G S )co$ @$ ^

Astfel,dacavemunproiectmare,dorimsobinemtoateobiectelenaintedeetapadelinkare.nsituaiancare adugmsursenoi,nuvommaimodificamakefileul. Rezolvare


C C=g c c a l l :b i g n u m b i g n u m :m a i n . ob i g n u m . op r i n t . oa d d . o $ ( C C )m a i n . ob i g n u m . op r i n t . oa d d . oob i g n u m % . o :% . c $ ( C C )$ ( C C F L A G S )co$ @$ ^ c l e a n : r mf* . ob i g n u m
uso/laboratoare/laborator06.txtLastmodified:2013/01/1421:20bysorina.sandu

S-ar putea să vă placă și

  • Lab7 USO
    Lab7 USO
    Document12 pagini
    Lab7 USO
    Mihai Stanescu
    Încă nu există evaluări
  • Lab9 USO
    Lab9 USO
    Document9 pagini
    Lab9 USO
    Mihai Stanescu
    Încă nu există evaluări
  • Curs 13 Handout
    Curs 13 Handout
    Document38 pagini
    Curs 13 Handout
    Mihai Stanescu
    Încă nu există evaluări
  • Lab11 USO
    Lab11 USO
    Document12 pagini
    Lab11 USO
    Mihai Stanescu
    Încă nu există evaluări
  • Lab4 USO
    Lab4 USO
    Document11 pagini
    Lab4 USO
    Mihai Stanescu
    Încă nu există evaluări
  • Lab 10 USO
    Lab 10 USO
    Document11 pagini
    Lab 10 USO
    Mihai Stanescu
    Încă nu există evaluări
  • Culegere de Ghicitori PT Copii
    Culegere de Ghicitori PT Copii
    Document70 pagini
    Culegere de Ghicitori PT Copii
    riana 77
    100% (2)
  • Lab8 USO
    Lab8 USO
    Document8 pagini
    Lab8 USO
    Mihai Stanescu
    Încă nu există evaluări
  • Lab2 USO
    Lab2 USO
    Document13 pagini
    Lab2 USO
    Mihai Stanescu
    Încă nu există evaluări
  • Lab1 USO
    Lab1 USO
    Document5 pagini
    Lab1 USO
    Mihai Stanescu
    Încă nu există evaluări
  • Lab3 USO
    Lab3 USO
    Document13 pagini
    Lab3 USO
    Mihai Stanescu
    Încă nu există evaluări
  • Curs 04 Handout
    Curs 04 Handout
    Document43 pagini
    Curs 04 Handout
    Mihai Stanescu
    Încă nu există evaluări
  • Lab5 USO
    Lab5 USO
    Document9 pagini
    Lab5 USO
    Mihai Stanescu
    Încă nu există evaluări
  • Curs 11 Handout
    Curs 11 Handout
    Document37 pagini
    Curs 11 Handout
    Mihai Stanescu
    Încă nu există evaluări
  • Lab12 USO
    Lab12 USO
    Document5 pagini
    Lab12 USO
    Mihai Stanescu
    Încă nu există evaluări
  • Curs 10 Handout
    Curs 10 Handout
    Document41 pagini
    Curs 10 Handout
    Mihai Stanescu
    Încă nu există evaluări
  • Curs 12 Handout
    Curs 12 Handout
    Document36 pagini
    Curs 12 Handout
    Mihai Stanescu
    Încă nu există evaluări
  • Curs 02 Handout
    Curs 02 Handout
    Document39 pagini
    Curs 02 Handout
    Sarah Hernandez
    Încă nu există evaluări
  • Curs 09 Handout
    Curs 09 Handout
    Document40 pagini
    Curs 09 Handout
    Mihai Stanescu
    Încă nu există evaluări
  • Curs 00 USO Facultatea Politehnica Bucuresti
    Curs 00 USO Facultatea Politehnica Bucuresti
    Document26 pagini
    Curs 00 USO Facultatea Politehnica Bucuresti
    Daniela Dragan
    Încă nu există evaluări
  • Curs 05 Handout
    Curs 05 Handout
    Document37 pagini
    Curs 05 Handout
    Mihai Stanescu
    Încă nu există evaluări
  • Curs 06 Handout
    Curs 06 Handout
    Document42 pagini
    Curs 06 Handout
    Mihai Stanescu
    Încă nu există evaluări
  • USO Curs 07 Handout
    USO Curs 07 Handout
    Document38 pagini
    USO Curs 07 Handout
    Alexandru Grigore
    Încă nu există evaluări
  • Curs 03 Handout
    Curs 03 Handout
    Document41 pagini
    Curs 03 Handout
    Sarah Hernandez
    Încă nu există evaluări
  • Comenzi Latex
    Comenzi Latex
    Document2 pagini
    Comenzi Latex
    mari_eu
    Încă nu există evaluări
  • Latex Prin Exemple
    Latex Prin Exemple
    Document212 pagini
    Latex Prin Exemple
    Denis Ibram
    Încă nu există evaluări
  • Curs 08 Handout
    Curs 08 Handout
    Document36 pagini
    Curs 08 Handout
    Mihai Stanescu
    Încă nu există evaluări
  • Curs 01 Handout
    Curs 01 Handout
    Document28 pagini
    Curs 01 Handout
    Sarah Hernandez
    Încă nu există evaluări
  • CV Tip Simplu
    CV Tip Simplu
    Document1 pagină
    CV Tip Simplu
    AnNe MaRie
    100% (1)