Sessió 1 curs programació linux

De Wikijoan
Dreceres ràpides: navegació, cerca

El material del curs el trobaràs al Campus Virtual Atenea, on hi pots accedir-hi per aquest enllaç:

http://atenea.upc.edu/moodle/course/view.php?id=16197 com a visitant i després has d'escriure la clau d'inscripció: 90072007-CB i clicar a "Inscriu-me en aquest curs" i ja hauràs entrat al curs.


Sessió 1. 11-4-2008


login: cursice/ice


Josep Vilaplana

Lluis Pérez Vidal

Sergi Tur


The Art of Unix Programming

Eric S. Raymond

també autor de:

"La catedral y el bazar"

http://es.wikipedia.org/wiki/Eric_S._Raymond


Codi Hamming

http://es.wikipedia.org/wiki/C%C3%B3digo_Hamming


ofuscació de codi:

http://es.wikipedia.org/wiki/Ofuscaci%C3%B3n


Prescripció de Postel:

http://onlinedictionary.datasegment.com/word/postel's%20prescription


KISS Principle

http://en.wikipedia.org/wiki/KISS_principle


Calculadora de consola:

cursice@ali15:~$ bc -> molt més ràpid que la calculadora gràfica


Joc de Rogue: joc gràfic però amb interfície textual:

http://es.wikipedia.org/wiki/Rogue


gimp millor que Adobe Photoshop?


Eina automàtica per convertir una pàgina textual a html: http://docutil.sourceforge.net



A Ubuntu, per defecte no s'instal.la les llibreries bàsiques, com per exemple stdio.h, que s'haurien de trobar a /usr/include

S'ha d'instal.lar el paquet libc6-dev

i ja es soluciona el problem:


$ sudo apt-get install libc6-dev

$ whereis stdio.h



Pràctica: http://www.lsi.upc.edu/~inf/laboratori/index.html#sessions

ens baixem els fitxers de la sessió 8 i 9


descomprimim el fitxer compsep.tgz:


tar zxvf compsep.tgz


Recordar d'apretar TAB per completar el nom del fitxer **************


Anem a sumar dos números racionals

natural.h -> coses que es poden fer amb els números naturals

racional.h -> coses que es poden fer amb els números racionals

fc.h -> fracció canònica


Eina make (important). Repàs

man make -> make - GNU make utility to maintain groups of programs


make [ -f makefile ] [ options ] ... [ targets ] ...


gcc: compilador i muntador

gcc -c -> compilador. compila el font pe aconseguir l'objecte

gcc -c -g -> debugging. en el fitxer objecte queda inclosa la informació de warnings i errors

gcc -c -g -ansi -> que sigui estàndard d'ANSI

gcc -c -g -ansi -Wstrict-prototypes -Wmissing-prototypes -Wall -> la W és de warnings

Objectiu: la compilació ha de ser sense warnings


gcc -c -g -ansi -Wstrict-prototypes -Wmissing-prototypes -Wall seqrac.c -> obtenim seqrac.o

Per cada fitxer .c hauríem d'obtenir el .o (objecte), i quan els tinguem tots fer el muntatge.


makefile és per fer tot el procés de cop

emacs Makefile &

el & és per continuar el procés en paral.lel


seqrac és el nom de la regla i també el nom del fitxer.

seqrac necessita tots els fitxer objecte: natural.o, racional.o, fc.o i seqrac.o

hem de posar tabuladors (molt de compte!!)

gcc -o seqrac -> el nom de l'executable serà seqrac


truco: per fer copiar i enganxar, seleccionar el que vols copiar, ficar el cursor allà on ho vols copiar, i amb el botó del mig del ratolí es copia

comentaris amb coininet


i edito el fitxer (de moment es fiquen les dependències manualment):


seqrac: seqrac.o racional.o natural.o fc.o

gcc -o seqrac seqrac.o racional.o natural.o fc.o

seqrac.o: seqrac.c rational.h

gcc -c -g -ansi -Wstrict-prototypes -Wmissing-prototypes -Wall seqrac.c

rational.o: rational.c rational.h natural.h

gcc -c -g -ansi -Wstrict-prototypes -Wmissing-prototypes -Wall rational.c

natural.o: natural.c natural.h

gcc -c -g -ansi -Wstrict-prototypes -Wmissing-prototypes -Wall natural.c

fc.o: fc.c fc.h natural.h rational.h

gcc -c -g -ansi -Wstrict-prototypes -Wmissing-prototypes -Wall fc.c


cursice@ali15:~/Desktop/compsep$ make seqrac

-> obtenim seqrac.o, i fa bé les dependències. Actualitza les dependències en el cas de què s'hagi fet canvis.

make crida a Makefile


Fem-ho més fàcil.

Fiquem variables:


OBJECTES=seqrac.o racional.o natural.o fc.o

CFLAGS=-g -ansi -Wstrict-prototypes -Wmissing-prototypes -Wall

seqrac: $(OBJECTES)

gcc -o seqrac $(OBJECTES)

seqrac.o: seqrac.c rational.h

gcc -c $(CFLAGS) seqrac.c

rational.o: rational.c rational.h natural.h

gcc -c $(CFLAGS) rational.c

natural.o: natural.c natural.h

gcc -c $(CFLAGS) natural.c

fc.o: fc.c fc.h natural.h rational.h

gcc -c $(CFLAGS) fc.c



M'interessa una regla que eviti escriure tots els fitxers necessaris. Esborrem tots els fitxers objecte finals


OBJECTES=seqrac.o racional.o natural.o fc.o

CFLAGS=-g -ansi -Wstrict-prototypes -Wmissing-prototypes -Wall

seqrac: $(OBJECTES)

gcc -o seqrac $(OBJECTES)

seqrac.o: seqrac.c rational.h

gcc -c $(CFLAGS) seqrac.c

rational.o: rational.c rational.h natural.h

gcc -c $(CFLAGS) rational.c

natural.o: natural.c natural.h

gcc -c $(CFLAGS) natural.c

fc.o: fc.c fc.h natural.h rational.h

gcc -c $(CFLAGS) fc.c

.PHONY esborra esborraTot


esborra:

rm -f $(OBJECTES) *~

esborraTot:

rm -f $(OBJECTES) *~ seqrac

Eines de l'usuari
Espais de noms
Variants
Accions
Navegació
IES Jaume Balmes
Màquines recreatives
CNC
Informàtica musical
joanillo.org Planet
Eines