Vous êtes sur la page 1sur 17

ProgramacinconmicroLinux_vem1punto1

Teorayejerciciosprcticos

BLOQUE
1

Ttulo
Introduccinalaprogramacin

Aspectos considerados
ProgramacinestructuradayLenguajeC

Fundamentos Tericos
Introduccin
Un PROGRAMA es un conjunto de mandatos que puede someterse, como
una unidad, a un ordenador y utilizarse para dirigir su comportamiento. Cada
uno de los mandatos recibe el nombre de SENTENCIA o INSTRUCCIN.
Todo programa est constituido por uno o varios algoritmos. Un
ALGORITMO es sencillamente un conjunto de reglas para efectuar algn clculo.
La construccin de un algoritmo debe ser lo ms independiente posible de los
lenguajes de programacin. Para llegar a la solucin (algoritmo) que resuelve un
problema, se debe pasar por varios niveles de abstraccin. El nivel mximo ha de
ser totalmente independiente de los lenguajes de programacin; en cambio, el
nivel menos abstracto ha de estar orientado al lenguaje de programacin que se
utilice.

Programacin estructurada
La programacin estructurada es una tcnica para disear programas
basada en los siguientes principios:
Modularidad
: Un programa puede construirse a partir de unidades lgicas,
razonablemente pequeas, que se denominan mdulos (en lenguaje C,
funciones).

Diseo Descendente
: El diseo se hace de los general a lo particular,
considerando que una determinada funcin est resuelta y dejando su
construccin para un paso posterior.
Teora de la estructura
: Cualquier programa puede ser diseado
empleando slo tres tipos de estructuras de control:
Secuencial
: conjunto de acciones ejecutadas una a continuacin de
otra una sola vez.
Condicional
: Permite ejecutar un grupo de acciones u otro,
dependiendo de que se cumpla o no una condicin.
Repetitiva
: Ejecuta una o varias acciones un nmero controlado de
veces.
Los programas as diseados sern fciles de verificar, depurar y
Mantener.

Ciclo de vida de un programa o aplicacin


Disear un programa no se reduce slo a escribir un determinado
algoritmo en algn lenguaje de programacin; esto slo se corresponde dentro
del ciclo de vida de un programa con la fase de codificacin.
La vida de un programa abarca desde el momento que se establece la
definicin del problema hasta que dicha aplicacin es desechada.
Las etapas en la vida de un programa son:

Definicin y enunciado.
Diseo y anlisis.
Codificacin.
Comprobacin y depuracin.
Documentacin y mantenimiento.

A continuacin se describe cada una de ellas.


DEFINICIN Y ENUNCIADO
En esta fase debe definirse con claridad todo lo que atae al problema
que se quiere resolver. Esta definicin incluir una lista completa de todos los
requisitos que se deben cumplir y se especificar la solucin esperada tanto para
los datos de entrada correctos como para los incorrectos. El programa ha de
responder en todos los casos sin que se origine una finalizacin anormal del
mismo.

DISEO O ANLISIS
Puede dividirse en alto y bajo nivel. El primero consiste en realizar el
planteamiento de la solucin. Un problema no se suele componer de una sola
tarea, sino de varias relacionadas. Por ello, una solucin debe especificar las
tareas que a llevar a cabo, las responsabilidades de cada una y la forma de
relacionarse e intercalarse las distintas tareas.
El diseo a bajo nivel consistir en la seleccin de los algoritmos ms
apropiados y su representacin en algn
pseudocdigo
(lenguaje prximo al
materno), as como en la seleccin de las estructuras de datos ms adecuadas.
CODIFICACIN
Hay que elegir el lenguaje de programacin ms adecuado al tipo de
problema o a los algoritmos y estructuras de datos seleccionados en la etapa de
diseo. Independientemente del lenguaje escogido es conveniente utilizar un
estilo de programacin que sea fcilmente legible y pueda ser seguido por
cualquier persona. El estilo ms extendido se basa en la utilizacin de los
sangrados de lneas (
endentacin
). La codificacin de los algoritmos debe
presentar el mayor grado de eficiencia en cuanto a: Ejecucin, cdigo, memoria
y Entrada/Salida.
COMPROBACIN Y DEPURACIN
No basta con escribir y ejecutar un programa correctamente segn las
especificaciones realizadas por los usuarios. Es necesario comprobar que los
resultados son los adecuados en todos los casos, incluso en aquellos que no
hayan sido comprobados explcitamente. Un modo de garantizar el buen
funcionamiento del programa es la validacin con respecto a sus
especificaciones.
La depuracin de un programa consiste en detectar los casos ms
desfavorables que puede encontrar la aplicacin, por ejemplo situaciones que
abortaran la ejecucin o bloquearan el ordenador (pulsacin de un tecla
indebida). La depuracin tambin contempla la eliminacin del cdigo fuente
redundante.
DOCUMENTACIN Y MANTENIMIENTO
La documentacin de un programa es un proceso continuo a lo largo de
todo el ciclo de vida. Cada etapa produce una documentacin especfica.
Despus de haber comprobado que el programa funciona correctamente, habr
que recopilar toda esta informacin producida a lo largo del proceso,
completarla y organizarla para elaborar una documentacin del programa que
sea til para sus usuarios y para los programadores encargados de su
mantenimiento.
3

Los programadores deben documentar el cdigo producido por ellos. Esta


ltima documentacin consiste en colocar los comentarios que sean precisos
entre las lneas de cdigo.
Los programas no son entes estticos, sino que deben ser revisados y
actualizados constantemente porque se descubren nuevos errores, se modifica
alguna especificacin, se cambia de ordenador, etc. La fase en la cual se
efectan estas modificaciones posteriores se denomina mantenimiento. Una
buena documentacin facilita el mantenimiento de los programas de forma
clara, sistemtica y legible, la etapa de mantenimiento puede ser muy difcil,
incluso imposible.
Si se descubren errores en las fases anteriores, se tendr que empezar de
nuevo desde la etapa correspondiente. La fase de mantenimiento implicar, en
muchos casos, repetir varias de las etapas anteriores, segn se trate de cambios
en la especificacin, sustitucin de un algoritmo por otro considerado mejor u
otros motivos.

Lenguajes de programacin
A la hora de describir al ordenador como resolver un problema, es
necesario formalizarlo adecuadamente para que pueda entenderlo. Esta
formalizacin se realiza a travs de un lenguaje de programacin.
Se entiende por LENGUAJE DE PROGRAMACIN la notacin para la
descripcin precisa de algoritmos o programas informticos. Los lenguajes de
programacin definen de forma estricta la sintaxis y la semntica.
Existen cinco generaciones de lenguajes de programacin:
PRIMERA GENERACIN
Est formada por los siguientes lenguajes: binario, mquina, ensamblador
y macroensamblador. El alfabeto del lenguaje binario es el 0 y el 1, es decir,
cada instruccin se corresponde con una determinada configuracin de ceros y
unos. A partir del lenguaje mquina, las instrucciones (mandatos) se representan
mediante identificadores que estn compuestos de caracteres alfanumricos;
estos lenguajes necesitan de un traductor para transformar los programas al
lenguaje binario. A estos lenguajes tambin se les llama lenguajes de bajo nivel.
SEGUNDA GENERACIN
La componen los siguientes lenguajes: FORTRAN, COBOL, ALGOL y BASIC.
Tambin llamados lenguajes de alto nivel y de programacin clsica. Los
lenguajes de esta generacin se pueden dividir en dos amplias categoras:
cientficos y de gestin.
4

TERCERA GENERACIN
Estos lenguajes (tambin denominados lenguajes de programacin
moderna o estructurada) estn caracterizados por sus potentes posibilidades
procedimentales y de estructuracin de datos. Se pueden dividir en dos grupos:
lenguajes de alto orden de propsito general y lenguajes especializados.
El primer grupo est constituido por los lenguajes PL/1, PASCAL,
MODULA2, C y ADA. Todos ellos descendientes del ALGOL. Estos lenguajes se
utilizan en la construccin de gran espectro de aplicaciones (ciencia e
ingeniera, comerciales, programacin de sistemas y otros).
Los lenguajes especializados estn caracterizados por su usual
formulacin sintctica, que ha sido especialmente diseada para una aplicacin
particular. Se suelen utilizar en el mundo de la ingeniera de software. Ejemplos
de ellos pueden ser LISP, PROLOG, APL, FORTH, etc.
CUARTA GENERACIN
El nivel de abstraccin va creciendo desde la primera a la tercera
generacin. Los lenguajes de cuarta generacin incrementan, an ms esta
distancia. El control y las estructuras de datos poseen una sintaxis distinta a la
de anteriores generaciones con el fin de elevar dicho nivel.
Se pueden clasificar en dos grandes categoras: lenguajes de peticin y
generacin de programas. Los primeros se han desarrollado para ser utilizados
conjuntamente con aplicaciones de bases de datos. Los segundos, permiten al
usuario crear programas en un lenguaje de tercera generacin usando
notablemente menos sentencias.
QUINTA GENERACIN
Varios procesadores modernos no soportan el ensamblador. Es decir son
programados directamente en un lenguajes especializado de alto nivel como LISP
cdigoP. Los lenguajes de quinta generacin soportan el diseo orientado a
objetos, el procesamiento paralelo y vectorial. Suelen ser de propsito
particular. Son empleados en aplicaciones de investigacin y de construccin de
prototipos. Con la aparicin de los sistemas operativos OS/2 y la serie Windows
se han desarrollado programas que permiten la programacin visual.

Traductores y compiladores
Un programa codificado en lenguaje de alto nivel se pasa al lenguaje de la
mquina a travs del traductor correspondiente a ese lenguaje. Por lo tanto, un
traductor es un programa que toma, como entrada, un programa escrito en un
lenguaje (lenguaje fuente) y produce, como salida, un programa escrito en otro
lenguaje (lenguaje objeto).
5

Si el lenguaje fuente es de alto nivel (como FORTRAN, BASIC o Pascal) y el


lenguaje objeto es un lenguaje de bajo nivel (como ensamblador o lenguaje
mquina), el traductor correspondiente se llama
compilador
. El compilador
toma como entrada las instrucciones del lenguaje fuente y genera como salida
instrucciones del lenguaje objeto; ste puede ser binario o mquina.
El intrprete a medida que traduce cada instruccin la ejecuta sobre los
datos que le corresponden (cero o ms de un conjunto de datos). Cuando ha
terminado de ejecutar esa instruccin de alto nivel, repite el mismo proceso con
la siguiente instruccin. De esa manera va avanzando hasta que se haya
ejecutado todo el programa de alto nivel segn los datos de partida. El
intrprete es, en general, ms pequeo que un compilador; pero el tiempo que
tarda en traducir y ejecutar un programa fuente es ms grande que el empleado
por el compilador. Cuando se interpreta un bucle de instrucciones, stas se
traducen y ejecutan tantas veces como se repite el bucle.
Cuando el lenguaje fuente es ensamblador y el lenguaje objeto es cdigo
de mquina, entonces el traductor se llama ensamblador.
Si, por ejemplo, un compilador puede ejecutarse en un procesador (INTEL
80486) y producir cdigo para otro procesador (MOTOROLA 68040), entonces se
habla de un compilador cruzado.

El lenguaje de programacin C
C es un lenguaje de programacin de propsito general que ofrece como
ventajas economa de expresin, control de flujo y un rico conjunto de
operadores. Ha sido estrechamente asociado con el Sistema Operativo UNIX
puesto que tanto el propio SO como los programas que corren en l estn
escritos en C. Sin embargo, este lenguaje no est ligado a ningn sistema
operativo en particular ni a ninguna equipo informtico.
C a demostrado ser un lenguaje agradable, expresivo y verstil para una
amplia variedad de programas. Es fcil de aprender y se obtienen mejores
resultado a medida que aumenta la experiencia con l.

Obtencin de un programa en lenguaje C


Para la creacin de un programa informtico que pueda ejecutarse en el
ordenador (binario), deben suceder varias etapas:
Generacin del programa en cdigo fuente (
.c

)
Compilacin, obtencin del mdulo objeto (
.o
)
Linkado.
6

Una vez concluido este proceso, el fichero generado puede ser ejecutado
por el PC de forma autnoma generalmente.
GENERACIN DEL PROGRAMA EN CDIGO FUENTE
El primer paso consiste en el diseo de un fichero de texto (obtenido a
partir de un editor
ASCII
, es decir, que no incorpore caracteres de control,
por ejemplo el editor
vi
) que contendr un nmero determinado de sentencias
(instrucciones propias del lenguaje C): estructuras de control, rdenes de
entrada y salida, etc. En un formato legible por el programador y que deben
cumplir las reglas marcadas por el compilador (como la sintaxis).
Una vez finalizado el fichero con extensin
.c

(regla no obligatoria
aunque establecida convencionalmente por los programadores para sealar un
fichero fuente escrito para este lenguaje) hay que proceder a su compilacin.
COMPILACIN
Esto es, convertir el fichero para que sea comprensible al ordenador
(mdulo objeto).
Generalmente el compilador realiza dos pasadas sobre el fichero de
texto. En la primera buscar aquellas instrucciones dirigidas al propio
compilador y que no pertenecen al lenguaje de programacin en s. La misin de
estas pseudoinstrucciones (denominadas directivas o instrucciones del
preprocesador) es la de realizar un tratamiento determinado sobre el contenido
del fichero, por ejemplo la directiva:
#include<.h>
Manda al preprocesador que la informacin del archivo que la acompaa
(
.h

inicial de
header
representa un fichero
cabecera
que guarda
informacin sobre las funciones contenidas en la biblioteca de C) sea incluida en
el propio fichero fuente.
LINKADO
Durante la fase de reubicado o linkado el enlazador (
linker
) recorre el
mdulo objeto con el fin de encontrar las funciones de la biblioteca que se han
declarado al compilador con la directiva correspondiente pero se encuentran
pendientes de incorporarse. A partir de este momento las aade, ya compiladas,
en el lugar donde han sido realizadas las llamadas.
El enlazador es una herramienta que combina el programa de usuario con
las funciones requeridas de la biblioteca. Dichas funciones son de formato
reubicable. Esto significa que dichas funciones no definen las direcciones
absolutas de la memoria para las diversas instrucciones en cdigo mquina,
7

sino que mantienen la informacin de los desplazamientos relativos a la posicin


final que ocupe en la memoria del programa donde se inserte.

Ejercicios Propuestos
1. Usando la distribucin
microlinux_vem 1.0
, escribe con el editor
vi
,
dentro del archivo
/home/root/hola.c
, el siguiente cdigo fuente de
un programa basado en el lenguaje de programacin C:
/*MiprimerprogramaenC*/
#include<tcclib.h>
intmain(void)
{
printf(HolaMundo.Esteesmiprimerprogramaescritoenlenguaje
C\n);
return(0);
}

2. Una vez comprobada la correcta edicin del archivo, pasa a compilar el


programa con el fin de convertirlo en ejecutable por medio de esta orden:
#tccoholahola.c

Nota
: Si el proceso de compilacin produjo algn tipo de mensaje de error, comprueba
el archivo fuente y corrige las diferencias sobre el texto propuesto. A continuacin repite
el proceso de compilado.

3. Comprueba ahora la existencia del programa


hola
y su propiedad de
ejecutable con la orden
#lsl
.
4. Llama al programa por el procedimiento habitual (
#./hola

) y compara
la accin que realiza con el cdigo fuente escrito en el primer apartado.
5. Repite los apartados 1, 2, 3 y 4 con el cdigo fuente propuesto del archivo

/home/root/cuadradoYcubo.c
:
/*Calculaelcuadradoyelcubodeunvalorpropuestoporelusuario*/
#include<tcclib.h>

intcuadrado(inta);
intcubo(intb);

intmain(void)
{
intcantidad;

printf(\nEscribaunvalordecimal:);
scanf(%d,&cantidad);

printf(\nElcuadradoes:%d,cuadrado(cantidad));
printf(\nElcuboes:%d\n\n,cubo(cantidad));


return(0);
};

intcuadrado(inta)
{
returna*a;
};

intcubo(intb)
{
returnb*b*b;
};

<>

Bloque
2

Ttulo
Aplicacionesdeusuario.CompiladoresI

Aspectos considerados

CompiladorTCC(
TinyCCompiler
)

Fundamentos Tericos
Introduccin
TinyCC (tambin conocido como TCC) es un pequeo pero muy rpido
compilador de programas escritos en el lenguaje de programacin C. TCC no solo
soporta ANSI C, sino tambin el nuevo estndar ISO C99 y las extensiones GNUC
incluyendo el ensamblador en lnea.
TCC puede ser usado para hacer
scripts
en C.
Aunque TCC permite trabajar con las libreras estndar (
stdio.h

stdlib.h

, etctera) la versin disponible en


micro
LINUX_vem requiere el uso
de un nico fichero de cabecera:
<tcclib.h
> que rene las funciones estndar
ms comunes.
En esta distribucin estn incluidos un extenso grupo de programas
escritos en C para demostrar la versatilidad de este compilador, adems se
acompaan, en forma de comentario de texto, los ficheros de cabecera
.h

necesarios para compilar estos fuentes en otros compiladores que admitan ANSI
C.

Invocacin desde la lnea de comandos


Para la llamada al compilador usaremos la orden:
#tcc[opciones][f1_cf2_2...][runfic_cargumentos...]
Donde las opciones ms generales son:
v
: Muestra la versin actual de TCC.
c
: Genera un fichero objeto (tambin debe indicarse la opcin
o
).
o
nombre_fichero

: Convierte el fichero objeto .o en ejecutable


(binario) llamado
nombre_fichero
.
r
: Genera un fichero objeto combinando todos los ficheros de
entrada.
Ejemplos en el uso de TCC:
#tcccf1.c

<Compilaf1.cygeneraelficheroobjeto
f1.o

#tccobinariof1.c
<Compilaf1.cygeneraelfichero

ejecutablebinario

#tccrunf1.c <Compilaf1.cyloejecutadirectamente

#tccrunf1.carg1 <Compilayejecutaf1.cdirectamente

arg1
entregaelprimerargumentoala

funcinprincipalmain()def1.c

#tccobinariof1.cf2.c
<Compilaf1.cyf2.c,los
enlaza

ygeneraelejecutablebinario

#tccobinariof1.of2.o
<Enlazajuntosf1.oyf2.oy

generaelejecutablebinario

#tccrofi.of1.cf2.c
<Compilaf1.cyf2.c,los
enlaza

juntosygenerafi.o
Recordemos una vez ms que para usar un archivo ejecutable han de
cumplirse dos condiciones:

10

A. Poseer permisos de ejecucin (si fuera necesario usaremos


#chmod+x
binario
).
B. Llamar al fichero con la expresin
#./nombre_del_ejecutable
.

Scripts
en C
TCC puede ser invocado desde un
script
, de igual forma que un
script
de
shell. Solo es necesario aadir la cadena
#!/usr/local/bin/tccrun
para
iniciar la ejecucin del cdigo C.
Observa el contenido del archivo
/home/todos/lenguajeC/ex1.c
:
#!/usr/local/bin/tccrun
#include<tcclib.h>

intmain()
{
printf("Helloworld\n");
return0;
}
Si consultamos los permisos del archivo antes de su ejecucin
obtendremos la siguiente respuesta:
#cd/home/todos/lenguajeC
#lslex1.c
rwxrxrx1alumno100107Oct52003ex1.c
#./ex1.c
Helloworld
#

Tal y como se indic anteriormente aparecen los permisos de ejecucin y


en la llamada se utiliz el prefijo
./
.

Ejercicios Propuestos
1. Edita y ejecuta el
script
C mostrado al final de la actividad.
Nota
: el fichero no funcionar correctamente si tiene extensin
.sh
.

2. Dirgete al directorio
/usr/src
y desde all buscar algn fichero fuente
para compilar y ejecutarlo posteriormente.
11

3. Lee la informacin del compilador TCC ejecutando


#ayuda.shtcc
.
<>

Bloque
3

Ttulo
Aplicacionesdeusuario.CompiladoresII

Aspectos considerados
CompiladorGCC(
theGNUCompilerCollection
).Automatizacindelprocesode
compilacinconMake.

Fundamentos Tericos
Introduccin a GCC
El compilador GNU C Compiler (GCC) fue inicialmente desarrollado por
Richard Stallman quien fund en 1984 el proyecto GNU con el fin de crear un
sistema operativo tipo Unix en forma de
free
software

(
software
libre) para
promover la libertad y cooperacin entre los usuarios y programadores de
computadores.
Desde entonces, GCC ha crecido hasta soportar muchos lenguajes de
programacin tales como C++, ObjetiveC, Java, Fortran y Ada. De hecho, hoy en
da se conoce como GNU
Compiler Collection
.
No solamente encontraremos GCC en sistemas operativos basados en Linux
si no tambin en otras plataformas para las que ya existe la versin
correspondiente como SO Windows (MinGW y Cygwin) o en OS X de Apple .
Adems, disponemos de la posibilidad de compilar un programa para una
plataforma distinta a la que se encuentra el propio programa (compilador
cruzado); como los incluidos (compiladores
propietarios
) en la distribucin
microLINUX_vem
2rev2
, ya que incluye herramientas para compilar cdigo
destinado a ser ejecutado dentro de un dispositivo microcontrolador (AVR o PIC).
Es decir, un ordenador integrado en un
chip
.
Obtendremos ayuda sobre el compilador escribiendo
#gcchelp
.

Compilando programas en lenguaje C y C++

12

Igual que suceda con TCC, este compilador trabaja desde la lnea de
comandos. Con la orden adecuada crearemos nuestro programa a partir del
cdigo fuente que tengamos.
Ejemplo de compilacin del siguiente fichero fuente
hola.c
:
//hola.c
#include<stdio.h>

intmain(){
printf("HolaMundo!\n");
return0;
}
#gccohola1hola.c
#./hola1
<#
chmoda+x
hola1
HolaMundo!
#_

Ejemplo de compilacin del mismo programa pero escrito en lenguaje C++


y compilado con la herramiento
g++

hola.cpp
:

//hola.cpp
#include<iostream>
usingnamespacestd;

intmain(){
cout<<"HolaMundo!"<<endl;
return0;
}

#g++ohola2hola.cpp
#./hola2
<#
chmoda+x
hola2
HolaMundo!
#_

Algunas opciones tpicas usadas en el proceso de compilacin son:


o
: Especifica el nombre de archivo ejecutable
v:Ofrece informacin detallada del compilado
Wall
: Presenta en pantalla todos (
all
) los mensajes de aviso
(
W
arning
) generados durante el proceso de compilacin
Usando estas opciones, la llamada anterior quedara como:
#g++o
hola2vWallhola.cpp
.

13

Herramienta de automatizacin de compilador


Make

El comando
make
facilita la tarea de compilado en proyectos compuestos
por varios ficheros fuente y libreras, incluso repartidos en distintos lugares
dentro del rbol de directorios.
Su misin es determinar automticamente qu elementos de un programa
necesitan ser recompilados, lanzando las rdenes correspondientes.
Se puede utilizar con cualquier lenguaje de programacin cuyo compilador
pueda ejecutarse con una consola de comandos.
En cada llamada, make busca un fichero de configuracin (
Makefile

makefile
por defecto) en el directorio actual con las relaciones entre los
ficheros de nuestro programa as como las rdenes necesarias para actualizar
cada fichero. Esta simple orden:
#make
Basta y sobra para que se realicen todas las recompilaciones necesarias.
Obtendremos ayuda con:
#makehelp|more

Contenido de un fichero
Makefile

Las rdenes del archivo de configuracin se construyen a partir de


macros

y
reglas
. Una MACRO es equivalente a una variable entorno de un SO, es decir,
sirve para sustituir a una cadena, a veces grande, de texto. Siempre se coloca
antes que las reglas. Sintaxis:
MiMacro=CadenaDeTexto>DefinicindelaMacro.
...

$(MiMacro)>Enellugardondemakeencuentra$(...)
situareltextooriginalasociadoalaMACRO.
Una macro puede tener cualquier nombre compuesto por caracteres
alfanumricos.
A la hora de insertarla en la regla correspondiente, ha de ir precedida del
signo
dollar
($). Adems, si consta de ms de un carcter, el nombre de la
macro
se pondr entre parntesis.
14

Las REGLAS constan de tres partes:


Una etiqueta cuya funcin es la de distinguir un conjunto de
rdenes.
Dependencias, esto es, aquellos ficheros necesarios para llevar a
cabo las acciones que corresponden a la etiqueta.
Los comandos a ejecutar. Cada lnea de comando, make crear un
proceso distinto.
La sintaxis de las reglas es:
etiqueta:[dependencia1...][;comandos]
[<tabulacin>comandos]
En cualquier parte del fichero se admiten comentarios (texto no tenido en
cuenta por
make
). El smbolo
#
identifica su comienzo hasta el final de la
lnea.
Si una lnea es demasiado larga se puede escribir
\
y continuar en la
siguiente, tanto en la definicin de macro como en la de comandos.

Reglas implcitas en
Make

A la hora de tratar los ficheros,


make
los reconoce a partir de su
extensin.
Dado un fichero concreto, si alguno de los que depende ha sido modificado, al
reconocer el tipo puede actualizarlos de manera eficiente. Las extensiones ms
comunes son:

.c

: Fichero fuente de cdigo C



.s

: Fichero fuente de Ensamblador


Ejemplo de un fichero
Makefile
utilizado para generar el fichero
ejecutable de un microcontrolador obtenido a partir del compilador cruzado
avrgcc:
#Estoesuncomentario
CC=avrgcc#Compilador
OBJCOPY=avrobjcopy#Generadordefichero.hex

CFLAGS=gmmcu=at90s2313#Parmetrosdelcompilador

rom.hex:demo.out#Regla3(necesitaelficherodelaregla2)
$(OBJCOPY)j.testOihexdemo.outrom.hex

demo.out:demo.o#Regla2(necesitaelficherodelaregla1)
$(CC)$(CFLAGS)odemo.outW1,Map,demo.map

15

demo.o:#Regla1(generademo.oapartirdedemo.c)
$(CC)$(CFLAGS)Oscdemo.c
#
^
#
|
#
+Recuerdaponeraquuntabulador(sinolohaces

make

falla)
#Laregla2requieredemo.opararealizarse.
#Laregla3requieredemo.outpararealizarse.
#Ficherofinal:rom.hex

Instalacin de programas a partir de los ficheros fuente


Siu
n usuario de un SO LINUX desea instalar un nuevo programa del que
dispone nicamente de los ficheros en formato
fuente
(sin compilar)
normalmente est obligado a realizar una serie de acciones dirigidas a
personalizar satisfactoriamente el proceso de compilado e instalacin de la
aplicacin en el sistema.
Por lo general, de entre los archivos incluidos, encontraremos el
documento de ayuda
README
con informacin detallada del procedimiento a
seguir.
Supongamos que hemos descargado el cdigo fuente de un programa
llamado
juego.tgz
desde internet y deseamos ejecutarlo en nuestro
ordenador con LINUX. Los pasos que seguiremos sern los siguientes:
1. Descomprimimos el archivo j
uego.tgz
con la orden y parmetros
apropiados. En este caso:
#tarxfvzgame.tgz

2. Buscamos el archivo
README
con el fin de obtener las rdenes de
instalacin de la aplicacin. Bsicamente suelen ser tres tareas a realizar
en el mismo directorio donde se encuentra el conjunto de archivos
fuente
:
a.
#./configure

: Este
script
extrae toda la informacin
necesaria de nuestro sistema para saber si el compilado es posible
y, en caso afirmativo, ajustar el contenido del archivo
Makefile
.
b.
#make
: Genera ahora el/los archivo/s ejecutable/es.
c.
#makeinstall
: Coloca todos los elementos de la aplicacin en
nuestro rbol de directorios para su correcta ejecucin dentro del
SO.

16

Ejercicios Propuestos
1. Estudia el cdigo fuente del programa de usuario
cifras0.2
. Para ello:
a. Dirgete a
/mnt/w2ul/LenguajeC/programas/cifras0.2
y lee
el archivo README.txt.
b. Entra en el directorio
fuentes
y analiza el contenido del archivo

Makefile
.
c. Genera el archivo ejecutable por medio de
#make
.
2. Se encuentra instalada por defecto la aplicacin TinyCC en este Sistema
Operativo?. Comprueba su existencia con
#tcc
.
3. Estudia el proceso de ajuste e instalacin personalizada de la aplicacin
TinyCC (
tcc0.9.25.tar.bz2
) a partir de los ficheros fuente disponibles en
el directorio:
/mnt/w2ul/LenguajeC/programas/tcc0.9.25
. Para
ello:
a. Abre el fichero
README
y lee las instrucciones de instalacin de la
aplicacin:
#nanoREADME
<ApartadoDocumentation
.
Dnde nos dice el autor de la aplicacin que ser instalada?.
b. Llama a
#./configure
y estudia la informacin presentada en
pantalla.
c. Compila la aplicacin con
#make
. Ten paciencia! este proceso
puede llevar entre 1 y varios minutos segn las cualidades de tu
ordenador.
d. Comprueba el funcionamiento correcto del nuevo programa con:
#
maketest
.
e. Termina el proceso de instalacin con
#makeinstall
.
4. Verifica la presencia del programa recin instalado entrando en el
directorio
examples
y compilando los tres primeros archivos
.c
con

tcc
. Por ejemplo:

<>

#tccex1.c
#./a.out
<Nombredeficheroejecutablepordefecto
Helloworld
#_

17

Vous aimerez peut-être aussi