<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ca">
	<id>http://wiki.joanillo.org/index.php?action=history&amp;feed=atom&amp;title=Sessi%C3%B3_1_curs_programaci%C3%B3_linux</id>
	<title>Sessió 1 curs programació linux - Historial de revisió</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.joanillo.org/index.php?action=history&amp;feed=atom&amp;title=Sessi%C3%B3_1_curs_programaci%C3%B3_linux"/>
	<link rel="alternate" type="text/html" href="http://wiki.joanillo.org/index.php?title=Sessi%C3%B3_1_curs_programaci%C3%B3_linux&amp;action=history"/>
	<updated>2026-08-30T06:34:08Z</updated>
	<subtitle>Historial de revisió per a aquesta pàgina del wiki</subtitle>
	<generator>MediaWiki 1.34.2</generator>
	<entry>
		<id>http://wiki.joanillo.org/index.php?title=Sessi%C3%B3_1_curs_programaci%C3%B3_linux&amp;diff=492&amp;oldid=prev</id>
		<title>Joan: New page: 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...</title>
		<link rel="alternate" type="text/html" href="http://wiki.joanillo.org/index.php?title=Sessi%C3%B3_1_curs_programaci%C3%B3_linux&amp;diff=492&amp;oldid=prev"/>
		<updated>2008-11-09T00:59:36Z</updated>

		<summary type="html">&lt;p&gt;New page: 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...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Pàgina nova&lt;/b&gt;&lt;/p&gt;&lt;div&gt;El material del curs el trobaràs al Campus Virtual Atenea, on hi pots accedir-hi per aquest enllaç:&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;Inscriu-me en aquest curs&amp;quot; i ja hauràs entrat al curs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sessió 1. 11-4-2008&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
login: cursice/ice&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Josep Vilaplana&lt;br /&gt;
&lt;br /&gt;
Lluis Pérez Vidal&lt;br /&gt;
&lt;br /&gt;
Sergi Tur&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Art of Unix Programming&lt;br /&gt;
&lt;br /&gt;
Eric S. Raymond&lt;br /&gt;
&lt;br /&gt;
també autor de:&lt;br /&gt;
&lt;br /&gt;
&amp;quot;La catedral y el bazar&amp;quot;&lt;br /&gt;
&lt;br /&gt;
http://es.wikipedia.org/wiki/Eric_S._Raymond&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Codi Hamming&lt;br /&gt;
&lt;br /&gt;
http://es.wikipedia.org/wiki/C%C3%B3digo_Hamming&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ofuscació de codi:&lt;br /&gt;
&lt;br /&gt;
http://es.wikipedia.org/wiki/Ofuscaci%C3%B3n&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Prescripció de Postel:&lt;br /&gt;
&lt;br /&gt;
http://onlinedictionary.datasegment.com/word/postel's%20prescription&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
KISS Principle&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/KISS_principle&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Calculadora de consola:&lt;br /&gt;
&lt;br /&gt;
cursice@ali15:~$ bc -&amp;gt; molt més ràpid que la calculadora gràfica&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Joc de Rogue: joc gràfic però amb interfície textual:&lt;br /&gt;
&lt;br /&gt;
http://es.wikipedia.org/wiki/Rogue&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
gimp millor que Adobe Photoshop?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Eina automàtica per convertir una pàgina textual a html: http://docutil.sourceforge.net&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--------------&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
S'ha d'instal.lar el paquet libc6-dev&lt;br /&gt;
&lt;br /&gt;
i ja es soluciona el problem:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
$ sudo apt-get install libc6-dev&lt;br /&gt;
&lt;br /&gt;
$ whereis stdio.h&lt;br /&gt;
&lt;br /&gt;
---------------&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pràctica: http://www.lsi.upc.edu/~inf/laboratori/index.html#sessions&lt;br /&gt;
&lt;br /&gt;
ens baixem els fitxers de la sessió 8 i 9&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
descomprimim el fitxer compsep.tgz:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
tar zxvf compsep.tgz&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Recordar d'apretar TAB per completar el nom del fitxer **************&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Anem a sumar dos números racionals&lt;br /&gt;
&lt;br /&gt;
natural.h -&amp;gt; coses que es poden fer amb els números naturals&lt;br /&gt;
&lt;br /&gt;
racional.h -&amp;gt; coses que es poden fer amb els números racionals&lt;br /&gt;
&lt;br /&gt;
fc.h -&amp;gt; fracció canònica&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Eina make (important). Repàs&lt;br /&gt;
&lt;br /&gt;
man make -&amp;gt; make - GNU make utility to maintain groups of programs&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
make [ -f makefile ] [ options ] ... [ targets ] ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
gcc: compilador i muntador&lt;br /&gt;
&lt;br /&gt;
gcc -c -&amp;gt; compilador. compila el font pe aconseguir l'objecte&lt;br /&gt;
&lt;br /&gt;
gcc -c -g -&amp;gt; debugging. en el fitxer objecte queda inclosa la informació de warnings i errors&lt;br /&gt;
&lt;br /&gt;
gcc -c -g -ansi -&amp;gt; que sigui estàndard d'ANSI&lt;br /&gt;
&lt;br /&gt;
gcc -c -g -ansi -Wstrict-prototypes -Wmissing-prototypes -Wall -&amp;gt; la W és de warnings&lt;br /&gt;
&lt;br /&gt;
Objectiu: la compilació ha de ser sense warnings&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
gcc -c -g -ansi -Wstrict-prototypes -Wmissing-prototypes -Wall seqrac.c -&amp;gt; obtenim seqrac.o&lt;br /&gt;
&lt;br /&gt;
Per cada fitxer .c hauríem d'obtenir el .o (objecte), i quan els tinguem tots fer el muntatge.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
makefile és per fer tot el procés de cop&lt;br /&gt;
&lt;br /&gt;
emacs Makefile &amp;amp;&lt;br /&gt;
&lt;br /&gt;
el &amp;amp; és per continuar el procés en paral.lel&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
seqrac és el nom de la regla i també el nom del fitxer.&lt;br /&gt;
&lt;br /&gt;
seqrac necessita tots els fitxer objecte: natural.o, racional.o, fc.o i seqrac.o&lt;br /&gt;
&lt;br /&gt;
hem de posar tabuladors (molt de compte!!)&lt;br /&gt;
&lt;br /&gt;
gcc -o seqrac -&amp;gt; el nom de l'executable serà seqrac&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
comentaris amb coininet&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
i edito el fitxer (de moment es fiquen les dependències manualment):&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
seqrac: seqrac.o racional.o natural.o fc.o&lt;br /&gt;
&lt;br /&gt;
	gcc -o seqrac seqrac.o racional.o natural.o fc.o&lt;br /&gt;
&lt;br /&gt;
seqrac.o: seqrac.c rational.h&lt;br /&gt;
&lt;br /&gt;
	gcc -c -g -ansi -Wstrict-prototypes -Wmissing-prototypes -Wall seqrac.c&lt;br /&gt;
&lt;br /&gt;
rational.o: rational.c rational.h natural.h&lt;br /&gt;
&lt;br /&gt;
	gcc -c -g -ansi -Wstrict-prototypes -Wmissing-prototypes -Wall rational.c&lt;br /&gt;
&lt;br /&gt;
natural.o: natural.c natural.h&lt;br /&gt;
&lt;br /&gt;
	gcc -c -g -ansi -Wstrict-prototypes -Wmissing-prototypes -Wall natural.c&lt;br /&gt;
&lt;br /&gt;
fc.o: fc.c fc.h natural.h rational.h&lt;br /&gt;
&lt;br /&gt;
	gcc -c -g -ansi -Wstrict-prototypes -Wmissing-prototypes -Wall fc.c&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
cursice@ali15:~/Desktop/compsep$ make seqrac&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; obtenim seqrac.o, i fa bé les dependències. Actualitza les dependències en el cas de què s'hagi fet canvis.&lt;br /&gt;
&lt;br /&gt;
make crida a Makefile&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Fem-ho més fàcil.&lt;br /&gt;
&lt;br /&gt;
Fiquem variables:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
OBJECTES=seqrac.o racional.o natural.o fc.o&lt;br /&gt;
&lt;br /&gt;
CFLAGS=-g -ansi -Wstrict-prototypes -Wmissing-prototypes -Wall&lt;br /&gt;
&lt;br /&gt;
seqrac: $(OBJECTES)&lt;br /&gt;
&lt;br /&gt;
	gcc -o seqrac $(OBJECTES)&lt;br /&gt;
&lt;br /&gt;
seqrac.o: seqrac.c rational.h&lt;br /&gt;
&lt;br /&gt;
	gcc -c $(CFLAGS) seqrac.c&lt;br /&gt;
&lt;br /&gt;
rational.o: rational.c rational.h natural.h&lt;br /&gt;
&lt;br /&gt;
	gcc -c $(CFLAGS) rational.c&lt;br /&gt;
&lt;br /&gt;
natural.o: natural.c natural.h&lt;br /&gt;
&lt;br /&gt;
	gcc -c $(CFLAGS) natural.c&lt;br /&gt;
&lt;br /&gt;
fc.o: fc.c fc.h natural.h rational.h&lt;br /&gt;
&lt;br /&gt;
	gcc -c $(CFLAGS) fc.c&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
M'interessa una regla que eviti escriure tots els fitxers necessaris. Esborrem tots els fitxers objecte finals&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
OBJECTES=seqrac.o racional.o natural.o fc.o&lt;br /&gt;
&lt;br /&gt;
CFLAGS=-g -ansi -Wstrict-prototypes -Wmissing-prototypes -Wall&lt;br /&gt;
&lt;br /&gt;
seqrac: $(OBJECTES)&lt;br /&gt;
&lt;br /&gt;
	gcc -o seqrac $(OBJECTES)&lt;br /&gt;
&lt;br /&gt;
seqrac.o: seqrac.c rational.h&lt;br /&gt;
&lt;br /&gt;
	gcc -c $(CFLAGS) seqrac.c&lt;br /&gt;
&lt;br /&gt;
rational.o: rational.c rational.h natural.h&lt;br /&gt;
&lt;br /&gt;
	gcc -c $(CFLAGS) rational.c&lt;br /&gt;
&lt;br /&gt;
natural.o: natural.c natural.h&lt;br /&gt;
&lt;br /&gt;
	gcc -c $(CFLAGS) natural.c&lt;br /&gt;
&lt;br /&gt;
fc.o: fc.c fc.h natural.h rational.h&lt;br /&gt;
&lt;br /&gt;
	gcc -c $(CFLAGS) fc.c&lt;br /&gt;
&lt;br /&gt;
.PHONY esborra esborraTot&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
esborra:&lt;br /&gt;
&lt;br /&gt;
	rm -f $(OBJECTES) *~&lt;br /&gt;
&lt;br /&gt;
esborraTot:&lt;br /&gt;
&lt;br /&gt;
	rm -f $(OBJECTES) *~ seqrac&lt;/div&gt;</summary>
		<author><name>Joan</name></author>
		
	</entry>
</feed>