• No se han encontrado resultados

Compilación. Montaje. Ficheros estandard de cabecera. Módulos de usuario. Ficheros Objeto. Librerías estandard. Ejecutable. stdio.h. stdlib.h. libc.

N/A
N/A
Protected

Academic year: 2022

Share "Compilación. Montaje. Ficheros estandard de cabecera. Módulos de usuario. Ficheros Objeto. Librerías estandard. Ejecutable. stdio.h. stdlib.h. libc."

Copied!
10
0
0

Texto completo

(1)

Herramientas de Desarrollo

Nos acercaremosalusode diversasherramientas utiles paraelprogramador.

Existenentornosintegrados parael desarrollo desoftware pero no sonde usocomun.

ClasicamenteenUNIXsehaceusodediversasherramientasquecumplenconlasdiversas

etapasdel desarrollo.

Estaparte delcursoeseminentementepractica. Elalumnodebera consultarlaayuda

disponible. Como metodo rapido de consulta, se dispondra de trpticos con resumenes



utiles de variasherramientas.

5.1 Editor

Vamosavertreseditorestipo. Elalumnodeberaescogeraquellaopcionquemasseadecue

a susnecesidades.

Enprimera instancia, serecomienda queuseel pico.

pico Simple Text Editor

Es el editor que internamente usa la herramienta para correo electronico pine. Es muy

sencillo deusar pero pocopotente.

Amodode introduccion asuuso realice lassiguientestareas:









pico T 5.1

Arranca el editor.

Ctrl G T 5.2

Accedea laayuda para aprenderlos pocos controles que tiene.

Ctrl X T 5.3

Abandonael editor.

vi VIsual Editor

Elvieseleditormasclasicoyloencontraremosen cualquiermaquinaUNIX.Esporeso

que,apesardeserpocoamigable,haymuchagentequelopre ereaotrosmasso sticados.

Existe una versionmasmoderna ypotentellamada vim.

(2)

 

vim T 5.4

Arranca el editor.

Esc T5.5

Cambia a \modo mandato".

:help T5.6

Accedea laayuda navegable.

:q T5.7

Abandonala edicion actual.



 

vimtutor T5.8

Arranca el editor enlarealizacionde untutorial del mismo.

emacs GNU project Editor

Elemacs,desarrolladoporFSFbajolicenciaGNU,esmuchomasqueunsimpleeditor. Es

un entorno sobre el que se integran multiples aplicaciones, correo electronico, navegador

web,news, etc.,etc., etc. Esta escritosobre uninterpretede lisp.

Existe una version llamada Xemacsmasadaptada alentorno gra co X, ytotalmente

compatible conelanterior.



 

emacs T5.9

Arranca el editor.

Ctrl G T5.10

Aborta laacciono mandato a medioespeci car.

Ctrl H T T5.11

Accedea larealizacionde un tutorial.

Ctrl X Ctrl C T5.12

Abandonala edicion actual.

Ejercicios

Para el editor de su eleccion, o para cada uno de ellos, realice los siguientes ejercicios

practicos:

p

Arranque eleditor para crear unnuevo chero.

T5.13

p

Lea el chero deejemplo \estilos.c" desdeel editor.

T5.14

p

Sin modi car su funcionalidad, formatee el texto con el estilo que considere mas T5.15

legible.

p

Guardeel texto editado con elnombre\mi estilo.c".

T5.16

p

Abandone el editor.

T5.17

(3)

Compilar un lenguaje de alto nivel, lease C, es traducir el chero o cheros fuente en

cherosobjeto, quecontienenunaaproximacionallenguajemaquina,masunalistadelos

smbolos externosreferenciadospero noresueltos.

La etapa de montaje es capaz de enlazar unos cheros objeto con otros, y a su vez

conlasbibliotecasnecesarias,resolviendotodaslasrefefrencias asmbolosexternos. Esta

etapa produce nalmenteun chero ejecutable.

Un chero ejecutable tiene un formato interno que el sistema operativos es capaz de

entender, quedescribecomo situar elproceso en memoriaparasuejecucion.

math.h stdlib.h

stdio.h

libc.a

libm.a gcc −c

prim.h main.c

main.o

ld primes

Ficheros estandard

de

cabecera Compilación

Ficheros Objeto

Librerías estandard

Montaje

Ejecutable Módulos

de usuario

prim.c

gcc −c prim.o

Leyen da

Herram

Fich Producto

Auto

Dependen entre si

Figura5.1: Fases de compilacion ymontaje.

En la gura 5.1se observa lacompilacion separada de dosmodulosmain.cyprim.c

yelmontajede losdos cherosobjetoresultantes paralaobtencion del cheroejecutable

primes.

Extensiones

Ciertossu jos oextensionesde losnombresde chero, leindicanalcompiladorlos conte-

nidos delmismo, ypor lotantoeltipode tratamientoquedebe realizarse:

.c Fuentede C. Debe serpreprocesado, compiladoyensamblado.

.h Fichero de cabecera de C. Contiene declaraciones de tipos de datos y prototipos de

funciones. Debe ser preprocesado.

.o Fichero objeto. Es el resultado de la compilacion de un chero fuente. Debe ser

montado.

(4)

estandard quehemosusadoennuestroprograma yque porlotantoaunquedan sin

resolveren los cheros objeto.

Errores y Warnings

Como ya habra constatado, los lenguajes de programacion, y entre ellos el C, presenta

una sintasis bastante estricta. Una de las misiones basicas del compilador es indicarnos

los errores quehayamos cometidoalcodi car, dondeestan yen que consisten.

Losavisosque un compiladorescapaz de noti carsonde dostipos:

Errores. Son problemas graves, tanto que evitan que el proceso de compilacion pueda

concluir. No obstante el compilador seguira procesando el chero o cheros, en un

intentodedetectar todoslos errores quehaya.

Es imprescindible corregir estos errores para que el compilador puede terminar de

hacer sutrabajo.

Warnings. Son problemas levesoalertas sobre posiblesproblemasen nuestro codigo.

Aunque elcompilador podra terminarde hacersutrabajo,es imprescindible co-

rregir los problemas que originan estos warnings, porqueseguramente seran

fuentede futurosproblemasmasgraves.

La compilacion de un programa correctamente realizado no debera dar ningun tipo

de mensaje,yterminarlmpiamente.

gcc GNU C and C++ Compiler

ElnombrequesuelerecibirelcompiladordelenguajeCenUNIXescc. Nosotrosusaremos

el gccqueesun compilador deC yC++,desarrollado por FSFbajolicencia GNU.

Esun compilador muy bueno, rapido y e ciente. Cubre las etapas de compilacion y

montaje. Partedeunoomasfuentesen C,objetosy/obibliotecasy nalmentegeneraun

ejecutable autonomo.

Admitemultitud de opciones,entre lascuales cabedestacar:

-c le.c Realizatansolo el pasode compilacion del chero indicado, pero noel de mon-

taje.

-o name Solicitaqueel resultadode lacompilacion seaun cheroconeste nombre.

-Wall Activa la deteccion de todo tipo de posibles errores. El compilador se comvierte

en masestricto.

-g A~nade al chero objeto o ejecutable informacion que (como veremos mas adelante)

permitira ladepuracionsimbolicadelmismo.

-O Activamecanismosdeoptimizacionqueconseguiranunejecutable masrapido,acosta

de una compilacion maslarga.

-llibrary Solicitaelmontaje contralabibliografaespeci cada.

(5)

Tienemuchisimas masopciones. Consulteelmanualsilo precisa.

minimo.c T 5.18

Escriba el chero con el editor de su preferencia y los contenidos indicados en el

captuloanterior 2.3.









gcc minimo.c T 5.19

Usamos elcompilador para obtener elejecutable resultante deeste fuente.



 

ls T 5.20

Observe que si no le indicamos al compilador otra cosa, el ejecutable resultante to-

mara el nombre por defecto a.out.









./a.out T 5.21

Ejecutamosel chero, indicando quese encuentra enel directorioactual. Esto sera

necesariosi notenemos el directorio \." en lavariablede entorno PATH.

Ahoravamos a trabajarunprograma mascomplejo.

factorial.c T 5.22

Escriba el chero con el editor de su preferencia y los contenidos indicados en el

captulo anterior. El objetivo sera mostrar el factorial de los numeros de 0 al 20

usando un bucle.









gcc -g -c factorial.c T 5.23

Con este paso compilaremos, para obtener el chero objeto factorial.o. Este -

chero contendra informacionsimbolica.









gcc factorial.o -o factorial T 5.24

Cuando compilecorrectamente, montaremos para obtenerel ejecutable.









./factorial T 5.25

Ejecute el mandato y compruebesu correcto funcionamiento.

5.3 Depurador

La compilacion sin macula de un programa no implica que sea correcto. Es muyposible

que contenga errores que solo se haran visibles en el momento de su ejecucion. Para

corregirestoserroresnecesitamosuna herramientaquenospermitasupevisarlaejecucion

de nuestroprograma yacorralarelerrorhasta localizarlo en elcodigo.

Existendepuradoresde bajoyde altonivel. Losdebajonivelnospermiteninspeccio-

narelcodigo maquinaoensamblador,ysuejecucionpaso apaso. Losaltonivel,tambien

llamadosdepuradoressimbolicos,permitenvisualizarycontrolarlaejecucionlneaalnea

del codigo fuente que hemos escrito, as como inspeccionar el valor de las variables de

nuestroprograma..

Paraqueunprograma puedaserdepurado correctamente,suejecutabledeberaconte-

nerinformacion queloasociealcodigo fuentedelquederivo. Paraello deberahabersido

compiladoconla opcion -g.

Algunasde lasfunciones deldepuradorson:

(6)

 Examinarel valor de variables

 Ejecutarel programalneaa lnea

Nosotrosusaremoselgdbdesarrollado por FSFbajo licenciaGNU.

Tambien veremos en dddqueesun frontend gra copara elgdb.

Fichero core

Trabajando en UNIXnos sucedera a menudo, que alejecutar un programa este termine

bruscamenteyapareciendoalgun mensajede errorcomo por ejemplo:







 segmentation fault: core dumped.

Estemensajenosinformadequenuestroprogramaenejecucion,estoes,elproceso,ha

realizadoun accesoilegala memoriayelsistema operativo loha matado. Asmismonos

indicaqueseha generadoun cherode nombrecore. El cherocoreesunvolcado dela

memoriadelprocesoenelprecisoinstanteenquecometoelerror,estoesunainstantanea.

Este cheronosservira parapoderestudiar contodo detalle lasituacion quedio lugaral

error.

gdb prog [core] GNU debugger

Invocaremos al gdb indicadole el programa ejecutable que queremos depurary opcional-

menteindicaremosen cherocorequegenerosuanomalaejecucion.

Una vez arrancado el depurador, proporciona una serie de mandatos propios para

controlar ladepuracion:

help Daaccesoa un menude ayuda.

run Arrancala ejecucion delprograma.

break Estableceun breakpoint(unnumerode lnea o elnombre de unafuncion).

list Imprime las lneasde codigo especi cadas.

print Imprime elvalor de unavariable.

continue Continua laejecuciondelprograma despuesde un breakpoint.

next Ejecutalasiguientelnea. Sisetratadeunallamadaafuncion,laejecutacompleta.

step Ejecuta la siguiente lnea. Si se trata de una llamada a funcion, ejecuta solo la

llamada ysepara alprincipiode lamisma.

quit Terminalaejecucion deldepurador

Paramasinformacionsobre eldepuradorconsultesuayudainteractiva,elmanualoel

trptico.

Masadelantetendremosoportunidadde hacer unusoextenso del depurador.

(7)

Esunfrontendgra coparaelgdb,estoes,nosofreceuninterfazgra cobastanteintuitivo

para realizar la depuracion, pero en de nitiva estaremos usando el gdb. Como carac-

terstica a~nadida, nosofrece facilidades paralavisualizacion gra cade las estructuras de

datos de nuestros programas, lo cual sera muy util. Para usar el ddd es presiso tener

arrancadas las X-Windows.

5.4 Bibliotecas

Unaregla basicapara realizarsoftwarecorrecto es utilizarcodigoque ya este probado,y

no estar reinventandosistematicamentela rueda. Siexisteuna funcion de biblioteca que

resuelve un problema deberemosusarla ynoreescribir talfuncionalidad.

Existen muchas muchas bibliotecas con facilidades para realizar todo tipo de cosas:

aritmeticade multiple precision, gra cos,sonidos,etc., etc.

Para poder hacer uso correcto de esas funciones de biblioteca debemos consultar el

manualquenosindicara lanecesidadde incluir ennuestro cherofuentecierto cherode

cabecera (ej. #include <string.h>), quecontienelas declaraciones de tipos de datos y

los prototiposde lasfunciones debiblioteca.

Serecomienda queconsulte eltriptico deANSIC.

Destacaremosaqudosbibliotecasfundamentales:

libc.a Es la biblioteca estandard de C. Contiene funciones para: manejo de tiras de

caracteres,entrada ysalidaestandard, etc.

Se correspondeconlasfunciones de nidasen los cheros de cabecera:

<assert.h> <ctype.h> <errno.h> <float.h> <limits.h>

<locale.h> <math.h> <setjmp.h> <signal.h> <stdarg.h>

<stddef.h> <stdio.h> <stdlib.h> <string.h> <time.h>

El montaje contra esta biblioteca se realiza de forma automatica. No es preciso

indicarlo, pero loharamosinvocando alcompiladorconlaopcion -lc.

libm.a Es la biblioteca que contiene funciones de calculo matematico y trigonometrico:

sqrt,pow,hypot,cos,atan,etc. . Parahacerusodelasfuncionesdeestabiblioteca

habraque incluiren nuestro chero <math.h>.

El montaje contra esta biblioteca se realiza invocando al compilador conla opcion

-lm.

ar -opts [member] arch files... Manage Archive Files

Cuando desee realizar medianos o grandes proyectos, podra realizar sus propias biblio-

tecas utilizando esta herramienta. Es una utilidad para la creacion y mantenimiento de

bibliotecasde cheros.

Para usar una biblioteca, se especi ca en la lnea de compilacion la biblioteca (por

convencionlibnombre.a) en vezde losobjetos.

Algunasopcionesfrecuentementeusadasson:

-d Eliminade labiblioteca los cheros especi cados

(8)

labiblioteca secrea

-ru Igualque -rpero soloreemplazasi el cheroes masnuevo

-t Muestrauna lista de los cheros contenidos enlabiblioteca

-v Verbose

-x Extrae dela bibliotecalos cheros especi cados

Acontinuacion semuestran algunosejemplos delusode este mandato.

ParaobtenerlalistadeobjetoscontenidosenlabibliotecaestandardeC,seejecutara:







 ar -tv /usr/lib/libc.a

Elsiguientemandatocreaunabibliotecaconobjetosquemanejandistintasestructuras

de datos:







 ar -rv $HOME/lib/libest.a pila.o lista.o







 ar -rv $HOME/lib/libest.a arbol.o hash.o

Unavezcreadalabiblioteca,habradosformasdecompilarunprogramaqueuseesta

biblioteca yademaslamatematica:







 cc -o pr pr.c -lm $HOME/lib/libest.a







 cc -o pr pr.c -lm -L$HOME/lib -lest

5.5 Constructor

Si el programa o aplicacion que estamos desarrollando esta convenientemente descom-

puesto en multiples modulos, el proceso global de compilacion puede ser automatizado

haciendouso dela herramientamake.

make Aplication Mantainer

Estautilidad facilitaelprocesodegeneracion yactualizacion deunprograma. Determina

automaticamente que partes de un programa deben recompilarse ante una actualizacion

de algunos modulos y las recompila. Para realizar este proceso, make debe conocer las

dependencias entrelos cheros: un cherodebe actualizarsesialguno de losquedepende

esmasnuevo.

La herramiente make consulta un chero (Makefile) que contiene las reglas que es-

peci can las dependencias de cada chero objetivo y los mandatos para actualizarlo. A

continuacion,semuestraun ejemplo:

(9)

# Esto es un comentario

CC=gcc # Esto son macros

CFLAGS=-g

OBJS2=test.o prim.o

all: primes test # Esta es la primera regla

primes: main.o prim.o # Esta es otra regla

gcc -g -o primes main.o prim.o -lm

# Este es el mandato asociado

test: $(OBJS2) # Aqu usamos las macros

${CC} ${CFLAGS} -o $@ ${OBJS2}

main.o prim.o test.o : prim.h # Esta es una dependencia.

clean: # Esta no depende de nada, es obligatoria.

rm -f main.o ${OBJS2}

Observe que las lneas que contienen los mandatos deben estar convenientemente ta-

buladashaciendousodeltabulador,node espacios. Denohacerloas, laherramientanos

indicara queel formatodel chero eserroneo.

Ejecutaremos



 

make paraquesedisparelaprimeraregla,o



 

make clean explicitando

lareglaque queremosdisparar. Entonceslo quesucederaes:

1. Se localiza lareglacorrespondienteal objetivo indicado.

2. Se tratansusdependencias como objetivos ysedisparanrecursivamente.

3. Siel cheroobjetivo esmenosactualquealgunode los cherosde los quedepende,

serealizan los mandatos asociadosparaactualizar el cheroobjetivo.

Existen macros especiales. Por ejemplo, $@ corresponde con el nombre del objetivo

actual. Asimismo, se pueden especi car reglas basadas en la extension de un chero.

Algunas deellas estan prede nidas(p.ej. laquegenera el .oapartir del.c).

Ejercicio 5.1.

5.6 Otras herramientas

Existen variedad de otras herramientas que podran serle de utilidad cuando desarrolle

codigoen un sistemaUNIXCitaremostres:







 gprof

Es una herramienta que nos permite realizar un per l de la ejecucion de nuestros

programas, indicando donde sepierde el tiempo, de menera quetendremos criterio

paraoptimizar si esconvenienteestaszonas de nuestro codigo.

(10)

  gcov

Essemejantealaanterior,perosuobjetivoesdistinto. Enlafasedeveri caciondel

programa,permitecubrirelcodigo,esdecir,asegurar quetodaslaslneasde codigo

de nuestroprograma hansido probadasconsu ciencia.



 

indent

Permite indentarel cheros fuenteen C. Esmuyparametrizable, paraqueel resul-

tado nal secorrespondaconelestilo delpropio autor.

Referencias

Documento similar

Després d’un inventari pericial i de consensuar-ho amb els mateixos redactors de l’estudi, s’apunta a que la problemàtica és deguda a que en els casos on l’afectació

Polígon industrial Torrent d'en Puig. Polígonindustrial de Can

¡ADVERVENC¡A!: ¡ntes de colocar, instalar, montar o suspender cualquier producto de altavoz, inspeccione todo el equipo físico, la suspensión, las cajas, los transductores,

Objeto del contrato: La contratación de los servicios de suministro, en régimen de alquiler, así como de los servicios de instalación, montaje, mantenimiento y desmontaje de

dcfvnion que le ha fido for^ofo valerfe de tod'.> fin fegiíir a ninguno encera mente para haílar en ta mifma difonancia la conformidad.Valerfe de todos es virtud tan precifa en

E Clamades andaua sienpre sobre el caua- 11o de madera, y en poco tienpo fue tan lexos, que el no sabia en donde estaña; pero el tomo muy gran esfuergo en si, y pensó yendo assi

La campaña ha consistido en la revisión del etiquetado e instrucciones de uso de todos los ter- mómetros digitales comunicados, así como de la documentación técnica adicional de

H de máquinas para la excavación de CIMENTACIÓN PARA MONTAJE de caseta de inversores, con medios mecánicos, incluido transporte de tierra a vertedero y mano de obra.. H de