SlideShare una empresa de Scribd logo
1 de 18
Compilación de
programas con archivos
Ayala Alberto
Castillo Ignacio
Isaac Aragon
Grandes Programas
Cuando se escriben grandes programas se debe generar un proyecto el cual
será dividido en módulos. Donde solo uno de ellos contiene el archivo main().c
Los demás archivos contienen las demás funciones que el programa requiera.
VENTAJAS
-Los módulos se dividen de manera natural en grupo comunes de funciones.
-Se pueden compilar los modulos separadamente y ligarlos con los ya
compilados.
-Las utilerias como make pueden ayudar a mantener sistemas grandes.
Archivos cabecera
Son archivos en los que se almacena un módulo o conjunto de definiciones,
estos archivos tienen la extensión “.h”.
Para definirlos en la función principal o main, basta con escribir algo así
como lo siguiente:
#include "mi_cabecera.h"
Con lo anterior, le estamos diciendo al programa que contenga el archivo
módulo “mi_cabecera.h”
Variables y Funciones
Externas
cada variable y argumento definido dentro de las funciones son locales así
mismas, si se desea declarar una variable global es necesario declarar fuera
de dichas funciones.
Alcance de variables externas.
Es decir si una variable externa(Global) es declarada después de la función
main() dicha función no podrá solicitar dicha variable.
ALCANCE DE LAS FUNCIONES Y
VARIABLES EN C
Una función es capaz de reconocer todas las variables de tipo global que
hayan sido declaradas antes de la misma función.
Adicionalmente, toda variable declarada dentro de una función se destruye al
finalizar esta.
Esta es la razón por la que todos los prototipos de funciones deben escribirse
o incluirse antes del cuerpo del código.
Ejemplo 1
En el código de la derecha describe un ejemplo
en el que en la función “intenta_acceder” intenta
usar la variable que no es global “variable”.
El código no compila.
Ejemplo 2
El ejemplo de la derecha muestra un ejemplo en
el que las variables son correctamente definidas
y llamadas pero en cambio las funciones no.
No es posible acceder a la función
“intenta_acceder” desde la función main ya que
esta fué declarada después de esta.
Ejemplo 3
El ejemplo 3 es un programa correcto:
La función “intenta_acceder” es llamada
desde la función main y el main si la conoce
ya que fué declarada antes de esta.
Las variables con nombre “variable” son
totalmente diferentes y las funciones
nisiquiera lo pueden notar, cada una es local a
su función y muere al finalizar esta; al llamar a
“intenta_acceder” se genera otro bloque de
memoria que sólo esa función conoce.
Variables externas
Son utilizadas cuando se requiere hacer referencia a una variable aún no
declarada o que se encuentra definida en un módulo externo.
La definición de la variable sólo debe hacerse una vez.
Ejemplo de uso:
main.c int arr[100];
arch.c extern int arr[];
VENTAJAS
-Es más fácil trabajar en Equipo ya que cada uno puede trabajar en un módulo.
-Puede ser usado un estilo orientado a objetos Cada archivo define un tipo
particular de objeto como un tipo de dato y las operaciones en ese objeto como
funciones. La implementación del objeto puede mantenerse privado al resto del
programa.
-Los archivos pueden contener todas las funciones de un grupo relacionado.
-Objetos bien implementados o definiciones de funciones pueden ser reusadas
en otros programas, con lo que se reduce el tiempo de desarrollo.
-En programas muy grandes cada función principal puede ocupar un propio
archivo.
-Cuando los cambios son hechos a un archivo, solamente ese archivo necesita
ser recompilado para reconstruir el programa.
Dividir Un Programa en varios
archivos
cada archivo tendrá que contender una o más funciones y sólo en uno se
incluirá la función main() mientras que los otros serán llamados de otros
archivos tratados como una biblioteca o cabecera.
#include “Archivo1.h” es como declara que en ese programa se utilizará dicho
archivo.
Organización de los datos de los datos en
cada archivo
Es importante organizar los datos en un cierto orden en cada uno de los
archivos creados:
1. Cabeceras de archivos y tipos de datos más importantes
2. declaración de variables globales y externas
3. una o más funciones (destacando la importancia de su orden)
Ese dependiendo en cuanto al gusto del programador en uso de funciones
implícita explícita.
La utilería make
Esta utilería sirve para mantener en buen funcionamiento un gran conjunto de
módulos de programas. Es muy útil si se desea por ejemplo, compilar varios
archivos .c y algunos de ellos ya fueron previamente compilador: Con la utilería
make podemos evitar compilar nuevamente estos archivos indicando que
estos archivos tienen la extensión “.o”.
Si tenemos los archivos: main.c f1.c ...... fn.c
Entonces podemos compilar estos archivos con la siguiente línea de
comandos: gcc -o main main.c f1.c ....... fn.c
Y si los archivos fi.c y fj.c ya fueron previamente compilados, podemos
compilar todo nuevamente así: gcc -o main main.c f1.c ... fi.o ... fj.o ... fn.c
Compilar archivos con la utilería
make
La programación make es directa, basta con escribir una línea de comandos
en un archivo de texto con ciertas reglas en las que se indique la forma en que
se deben compilar los archivos.
Debe crearse un archivo con nombre Makefile y en este mismo directorio
escribir el comando make desde consola para así ejecutarlo. De este modo las
cosas que hayas indicado en el archivo se ejecutarán por el sistema operativo.
Los archivos make están compuestos de:
-Dependencias: lado_izquierdo:lado_derecho(el lado izquierdo nombra el
nuevo destino o tarjet mientras que el lado derecho nombra los archivos de los
que depende el nuevo)
Creación de un archivo make
El siguiente es un ejemplo
de archivo make:
prog: prog.o f1.o f2.o
gcc -o prog prog.o f1.o f2.o -lm ...
prog.o: cabecera.h prog.c
gcc -c prog.c
f1.o: cabecera.h f1.c
gcc -c f1.c
f2.o: ....
...
La utilería make lo interpretará de la siguiente forma:
1. prog depende de tres archivos: prog.o, f1.o y f2.o. Si cualquiera
de los archivos objeto ha cambiado desde la última
compilación los archivos deben ser religados.
2. prog.o depende de 2 archivos, si estos han cambiado prog.o
deberá ser recompilado. Lo mismo sucede con f1.o y f2.o.
Los últimos 3 comandos en makefile son llamados reglas explícitas
-- ya que los archivos en los comandos son listados por nombre.
Creación de un archivo make
Se pueden usar reglas implícitas en makefile para generalizar reglas y hacer más compacta la escritura.
Si se tiene:
f1.o: f1.c
gcc -c f1.c
f2.o: f2.c
gcc -c f2.c
se puede generalizar a:
.c.o: gcc -c $<
Lo cual se lee como .ext_fuente.ext_destino: comando donde $< es una forma breve para indicar los archivos que
tienen la extensión .c
Se pueden insertar comentarios en un Makefile usando el símbolo #, en donde todos los caracteres que siguen a
# son ignorados.
Uso de macros con make
Se pueden definir macros para
que sean usadas por make:
Se definen en una
forma simple, por
ejemplo:
FUENTES = main.c f1.c f2.c
CFLAGS = -ggdb -C
LIBS = -lm
PROGRAMA = main
OBJETOS = (FUENTES: .c =
.o)
En donde (FUENTES: .c = .o) cambia la extensión .c de los fuentes por la extensión.o
Para referirse o usar una macro con make se debe hacer $(nomb_macro), por ejemplo:
$(PROGRAMA) : $(OBJETOS)
$(LINK.C) -o $@ $(OBJETOS) $(LIBS)
En el ejemplo mostrado se observa que:
● La línea que contiene $(PROGRAMA) : $(OBJETOS) genera una lista de dependencias y el destino.
● Se emplean macros internas como $@.
Existen varias macros internas a continuación se muestran algunas de ellas:
$*
Parte del nombre del archivo de la dependencia actual sin el sufijo.
$@
Nombre completo del destino actual.
$
Archivo .c del destino
Un ejemplo de un makefile para el programa modular discutido previamente se muestra a continuación:
Uso de macros con make
#
# Makefile
#
FUENTES.c=main.c EscribirMiCadena.c
INCLUDES=
CFLAGS=
SLIBS=
PROGRAMA=main
OBJETOS=$(FUENTES.c:.c=.o)
# Destino (target) especial (inicia con .)
.KEEP_STATE:
debug := CFLAGS=-ggdb
all debug: $(PROGRAMA)
$(PROGRAMA): $(INCLUDES) $(OBJETOS)
$(LINK.c) -o $@ $(OBJETOS) $(SLIBS)
clean:
rm -f $(PROGRAMA) $(OBJETOS)

Más contenido relacionado

La actualidad más candente

Ejemplo de Makefile en LINUX con lenguaje C compilando HolaMundo
Ejemplo de Makefile en LINUX con lenguaje C compilando HolaMundoEjemplo de Makefile en LINUX con lenguaje C compilando HolaMundo
Ejemplo de Makefile en LINUX con lenguaje C compilando HolaMundoIvan Luis Jimenez
 
C O M A N D O S I N T E R N O S M S D O S
C O M A N D O S  I N T E R N O S  M S  D O SC O M A N D O S  I N T E R N O S  M S  D O S
C O M A N D O S I N T E R N O S M S D O Smaverito
 
Manual php y_mysql
Manual php y_mysqlManual php y_mysql
Manual php y_mysqljohan reyes
 
Visual_foxpro 9.0
Visual_foxpro 9.0Visual_foxpro 9.0
Visual_foxpro 9.0Ernes 28
 
Tutorial de cakePHP itst
Tutorial de cakePHP itstTutorial de cakePHP itst
Tutorial de cakePHP itstomicx
 
Tutorial A Z A - Programador PHP
Tutorial A Z A - Programador PHPTutorial A Z A - Programador PHP
Tutorial A Z A - Programador PHPJuan Belón Pérez
 
Introduccion A Php
Introduccion A PhpIntroduccion A Php
Introduccion A Phputs
 
Instrucciones básicas para c++
Instrucciones básicas para c++Instrucciones básicas para c++
Instrucciones básicas para c++Aquino1912
 
Zend framework
Zend frameworkZend framework
Zend frameworkluislolo
 
94 Php. Instalacion De Apache 2.0.58
94 Php. Instalacion De Apache 2.0.5894 Php. Instalacion De Apache 2.0.58
94 Php. Instalacion De Apache 2.0.58José M. Padilla
 
Manual completo-php-5
Manual completo-php-5Manual completo-php-5
Manual completo-php-5jjmvc2481
 
96 Php. Instalacion De Php5 Sobre Apache 2.0.58
96 Php. Instalacion De Php5 Sobre Apache 2.0.5896 Php. Instalacion De Php5 Sobre Apache 2.0.58
96 Php. Instalacion De Php5 Sobre Apache 2.0.58José M. Padilla
 
Trabajo de ofimática ll 2º a Neri,Esperanza,Janet,Dulce,Guadalupe
Trabajo de ofimática ll 2º a Neri,Esperanza,Janet,Dulce,GuadalupeTrabajo de ofimática ll 2º a Neri,Esperanza,Janet,Dulce,Guadalupe
Trabajo de ofimática ll 2º a Neri,Esperanza,Janet,Dulce,GuadalupeEsperanza Briones
 

La actualidad más candente (18)

Ejemplo de Makefile en LINUX con lenguaje C compilando HolaMundo
Ejemplo de Makefile en LINUX con lenguaje C compilando HolaMundoEjemplo de Makefile en LINUX con lenguaje C compilando HolaMundo
Ejemplo de Makefile en LINUX con lenguaje C compilando HolaMundo
 
C O M A N D O S I N T E R N O S M S D O S
C O M A N D O S  I N T E R N O S  M S  D O SC O M A N D O S  I N T E R N O S  M S  D O S
C O M A N D O S I N T E R N O S M S D O S
 
Manual php y_mysql
Manual php y_mysqlManual php y_mysql
Manual php y_mysql
 
Visual_foxpro 9.0
Visual_foxpro 9.0Visual_foxpro 9.0
Visual_foxpro 9.0
 
Tutorial de cakePHP itst
Tutorial de cakePHP itstTutorial de cakePHP itst
Tutorial de cakePHP itst
 
Zend Framework
Zend FrameworkZend Framework
Zend Framework
 
Tutorial A Z A - Programador PHP
Tutorial A Z A - Programador PHPTutorial A Z A - Programador PHP
Tutorial A Z A - Programador PHP
 
Introduccion A Php
Introduccion A PhpIntroduccion A Php
Introduccion A Php
 
Instrucciones básicas para c++
Instrucciones básicas para c++Instrucciones básicas para c++
Instrucciones básicas para c++
 
Zend framework
Zend frameworkZend framework
Zend framework
 
Udf eficientes
Udf eficientesUdf eficientes
Udf eficientes
 
94 Php. Instalacion De Apache 2.0.58
94 Php. Instalacion De Apache 2.0.5894 Php. Instalacion De Apache 2.0.58
94 Php. Instalacion De Apache 2.0.58
 
Manual completo-php-5
Manual completo-php-5Manual completo-php-5
Manual completo-php-5
 
Visual FoxPro + MySQL Sistema Biblioteca
Visual FoxPro + MySQL Sistema BibliotecaVisual FoxPro + MySQL Sistema Biblioteca
Visual FoxPro + MySQL Sistema Biblioteca
 
Intro a cakephp
Intro a cakephpIntro a cakephp
Intro a cakephp
 
96 Php. Instalacion De Php5 Sobre Apache 2.0.58
96 Php. Instalacion De Php5 Sobre Apache 2.0.5896 Php. Instalacion De Php5 Sobre Apache 2.0.58
96 Php. Instalacion De Php5 Sobre Apache 2.0.58
 
Trabajo de ofimática ll 2º a Neri,Esperanza,Janet,Dulce,Guadalupe
Trabajo de ofimática ll 2º a Neri,Esperanza,Janet,Dulce,GuadalupeTrabajo de ofimática ll 2º a Neri,Esperanza,Janet,Dulce,Guadalupe
Trabajo de ofimática ll 2º a Neri,Esperanza,Janet,Dulce,Guadalupe
 
Php
PhpPhp
Php
 

Destacado

PRESENTATION_-_What_s_New_in_Vienna_-_Rona_-_October_2011
PRESENTATION_-_What_s_New_in_Vienna_-_Rona_-_October_2011PRESENTATION_-_What_s_New_in_Vienna_-_Rona_-_October_2011
PRESENTATION_-_What_s_New_in_Vienna_-_Rona_-_October_2011Patrick N.Z. Rona
 
Understanding DevOps in simpler way with Continuous Delivery
Understanding DevOps in simpler way with Continuous DeliveryUnderstanding DevOps in simpler way with Continuous Delivery
Understanding DevOps in simpler way with Continuous DeliverySwapnil Jain
 
Marannook’s-Bible-Study-for-Training-Staff-Counselors
Marannook’s-Bible-Study-for-Training-Staff-CounselorsMarannook’s-Bible-Study-for-Training-Staff-Counselors
Marannook’s-Bible-Study-for-Training-Staff-CounselorsLee Decker
 

Destacado (8)

Apuntes 3° parcial
Apuntes 3° parcialApuntes 3° parcial
Apuntes 3° parcial
 
Transcript
TranscriptTranscript
Transcript
 
Act 2
Act 2Act 2
Act 2
 
PRESENTATION_-_What_s_New_in_Vienna_-_Rona_-_October_2011
PRESENTATION_-_What_s_New_in_Vienna_-_Rona_-_October_2011PRESENTATION_-_What_s_New_in_Vienna_-_Rona_-_October_2011
PRESENTATION_-_What_s_New_in_Vienna_-_Rona_-_October_2011
 
POLIPLOIDÍA
POLIPLOIDÍAPOLIPLOIDÍA
POLIPLOIDÍA
 
Understanding DevOps in simpler way with Continuous Delivery
Understanding DevOps in simpler way with Continuous DeliveryUnderstanding DevOps in simpler way with Continuous Delivery
Understanding DevOps in simpler way with Continuous Delivery
 
Protherm
Protherm Protherm
Protherm
 
Marannook’s-Bible-Study-for-Training-Staff-Counselors
Marannook’s-Bible-Study-for-Training-Staff-CounselorsMarannook’s-Bible-Study-for-Training-Staff-Counselors
Marannook’s-Bible-Study-for-Training-Staff-Counselors
 

Similar a Compilación de programas

Tutorial de visual c++
Tutorial de visual c++Tutorial de visual c++
Tutorial de visual c++juliancetis109
 
Tutorial de visual C++
Tutorial de visual C++Tutorial de visual C++
Tutorial de visual C++juliancetis109
 
Tutorial de visual_c_
Tutorial de visual_c_Tutorial de visual_c_
Tutorial de visual_c_oscar020615
 
Tutorial de visual c++
Tutorial de visual c++Tutorial de visual c++
Tutorial de visual c++oscar020615
 
ESTRUCTURA BASICA PARA C++
ESTRUCTURA BASICA PARA C++ESTRUCTURA BASICA PARA C++
ESTRUCTURA BASICA PARA C++Idalia Tristan
 
TEMA-2 Estructura de un programa en C.pptx
TEMA-2 Estructura de un programa en C.pptxTEMA-2 Estructura de un programa en C.pptx
TEMA-2 Estructura de un programa en C.pptxVctorEmmanuelEspinoM
 
Presentacion de la_estructura_de_c++
Presentacion de la_estructura_de_c++Presentacion de la_estructura_de_c++
Presentacion de la_estructura_de_c++MartinCetis109
 
Presentacion de la_estructura_de_c++
Presentacion de la_estructura_de_c++Presentacion de la_estructura_de_c++
Presentacion de la_estructura_de_c++MartinCetis109
 
Estructura de un programa en c
Estructura de un programa en cEstructura de un programa en c
Estructura de un programa en cMary Guaman
 
Mis primeros pasos con Symfony 2
Mis primeros pasos con Symfony 2Mis primeros pasos con Symfony 2
Mis primeros pasos con Symfony 2Edgar Dueñas
 
2.1 estructura general de un programa en c
2.1 estructura general de un programa en c2.1 estructura general de un programa en c
2.1 estructura general de un programa en cSNPP
 

Similar a Compilación de programas (20)

Tutorial de visual c++
Tutorial de visual c++Tutorial de visual c++
Tutorial de visual c++
 
Tutorial de visual C++
Tutorial de visual C++Tutorial de visual C++
Tutorial de visual C++
 
Tutorial de visual_c_
Tutorial de visual_c_Tutorial de visual_c_
Tutorial de visual_c_
 
Tutorial de visual c++
Tutorial de visual c++Tutorial de visual c++
Tutorial de visual c++
 
ESTRUCTURA BASICA PARA C++
ESTRUCTURA BASICA PARA C++ESTRUCTURA BASICA PARA C++
ESTRUCTURA BASICA PARA C++
 
Estructura básica para C++
Estructura básica para C++Estructura básica para C++
Estructura básica para C++
 
TEMA-2 Estructura de un programa en C.pptx
TEMA-2 Estructura de un programa en C.pptxTEMA-2 Estructura de un programa en C.pptx
TEMA-2 Estructura de un programa en C.pptx
 
Lolo
LoloLolo
Lolo
 
Presentacion de la_estructura_de_c++
Presentacion de la_estructura_de_c++Presentacion de la_estructura_de_c++
Presentacion de la_estructura_de_c++
 
Presentacion de la_estructura_de_c++
Presentacion de la_estructura_de_c++Presentacion de la_estructura_de_c++
Presentacion de la_estructura_de_c++
 
Int prog matlab
Int prog matlabInt prog matlab
Int prog matlab
 
Estructura de un programa en c
Estructura de un programa en cEstructura de un programa en c
Estructura de un programa en c
 
Mis primeros pasos con Symfony 2
Mis primeros pasos con Symfony 2Mis primeros pasos con Symfony 2
Mis primeros pasos con Symfony 2
 
Estructura basica para c++
Estructura basica para c++Estructura basica para c++
Estructura basica para c++
 
mysql y visual c++.pdf
mysql y visual c++.pdfmysql y visual c++.pdf
mysql y visual c++.pdf
 
Lenguaje C
Lenguaje CLenguaje C
Lenguaje C
 
Intrucciones basicas para C++
Intrucciones basicas para C++Intrucciones basicas para C++
Intrucciones basicas para C++
 
INSTRUCCIONES BASICAS C++
INSTRUCCIONES BASICAS C++INSTRUCCIONES BASICAS C++
INSTRUCCIONES BASICAS C++
 
2.1 estructura general de un programa en c
2.1 estructura general de un programa en c2.1 estructura general de un programa en c
2.1 estructura general de un programa en c
 
Manual linux
Manual linuxManual linux
Manual linux
 

Último

Reporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdfReporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdfMikkaelNicolae
 
estadisticasII Metodo-de-la-gran-M.pdf
estadisticasII   Metodo-de-la-gran-M.pdfestadisticasII   Metodo-de-la-gran-M.pdf
estadisticasII Metodo-de-la-gran-M.pdfFlorenciopeaortiz
 
Curso intensivo de soldadura electrónica en pdf
Curso intensivo de soldadura electrónica  en pdfCurso intensivo de soldadura electrónica  en pdf
Curso intensivo de soldadura electrónica en pdfFernandaGarca788912
 
Propositos del comportamiento de fases y aplicaciones
Propositos del comportamiento de fases y aplicacionesPropositos del comportamiento de fases y aplicaciones
Propositos del comportamiento de fases y aplicaciones025ca20
 
TALLER PAEC preparatoria directamente de la secretaria de educación pública
TALLER PAEC preparatoria directamente de la secretaria de educación públicaTALLER PAEC preparatoria directamente de la secretaria de educación pública
TALLER PAEC preparatoria directamente de la secretaria de educación públicaSantiagoSanchez353883
 
Flujo multifásico en tuberias de ex.pptx
Flujo multifásico en tuberias de ex.pptxFlujo multifásico en tuberias de ex.pptx
Flujo multifásico en tuberias de ex.pptxEduardoSnchezHernnde5
 
El proyecto “ITC SE Lambayeque Norte 220 kV con seccionamiento de la LT 220 kV
El proyecto “ITC SE Lambayeque Norte 220 kV con seccionamiento de la LT 220 kVEl proyecto “ITC SE Lambayeque Norte 220 kV con seccionamiento de la LT 220 kV
El proyecto “ITC SE Lambayeque Norte 220 kV con seccionamiento de la LT 220 kVSebastianPaez47
 
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONALCHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONALKATHIAMILAGRITOSSANC
 
Una estrategia de seguridad en la nube alineada al NIST
Una estrategia de seguridad en la nube alineada al NISTUna estrategia de seguridad en la nube alineada al NIST
Una estrategia de seguridad en la nube alineada al NISTFundación YOD YOD
 
Flujo potencial, conceptos básicos y ejemplos resueltos.
Flujo potencial, conceptos básicos y ejemplos resueltos.Flujo potencial, conceptos básicos y ejemplos resueltos.
Flujo potencial, conceptos básicos y ejemplos resueltos.ALEJANDROLEONGALICIA
 
sistema de construcción Drywall semana 7
sistema de construcción Drywall semana 7sistema de construcción Drywall semana 7
sistema de construcción Drywall semana 7luisanthonycarrascos
 
SOLICITUD-PARA-LOS-EGRESADOS-UNEFA-2022.
SOLICITUD-PARA-LOS-EGRESADOS-UNEFA-2022.SOLICITUD-PARA-LOS-EGRESADOS-UNEFA-2022.
SOLICITUD-PARA-LOS-EGRESADOS-UNEFA-2022.ariannytrading
 
clases de dinamica ejercicios preuniversitarios.pdf
clases de dinamica ejercicios preuniversitarios.pdfclases de dinamica ejercicios preuniversitarios.pdf
clases de dinamica ejercicios preuniversitarios.pdfDanielaVelasquez553560
 
Unidad 3 Administracion de inventarios.pptx
Unidad 3 Administracion de inventarios.pptxUnidad 3 Administracion de inventarios.pptx
Unidad 3 Administracion de inventarios.pptxEverardoRuiz8
 
Proyecto de iluminación "guia" para proyectos de ingeniería eléctrica
Proyecto de iluminación "guia" para proyectos de ingeniería eléctricaProyecto de iluminación "guia" para proyectos de ingeniería eléctrica
Proyecto de iluminación "guia" para proyectos de ingeniería eléctricaXjoseantonio01jossed
 
Seleccion de Fusibles en media tension fusibles
Seleccion de Fusibles en media tension fusiblesSeleccion de Fusibles en media tension fusibles
Seleccion de Fusibles en media tension fusiblesSaulSantiago25
 
Reporte de Exportaciones de Fibra de alpaca
Reporte de Exportaciones de Fibra de alpacaReporte de Exportaciones de Fibra de alpaca
Reporte de Exportaciones de Fibra de alpacajeremiasnifla
 
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...Francisco Javier Mora Serrano
 
Caldera Recuperadora de químicos en celulosa tipos y funcionamiento
Caldera Recuperadora de químicos en celulosa  tipos y funcionamientoCaldera Recuperadora de químicos en celulosa  tipos y funcionamiento
Caldera Recuperadora de químicos en celulosa tipos y funcionamientoRobertoAlejandroCast6
 
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESAIPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESAJAMESDIAZ55
 

Último (20)

Reporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdfReporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdf
 
estadisticasII Metodo-de-la-gran-M.pdf
estadisticasII   Metodo-de-la-gran-M.pdfestadisticasII   Metodo-de-la-gran-M.pdf
estadisticasII Metodo-de-la-gran-M.pdf
 
Curso intensivo de soldadura electrónica en pdf
Curso intensivo de soldadura electrónica  en pdfCurso intensivo de soldadura electrónica  en pdf
Curso intensivo de soldadura electrónica en pdf
 
Propositos del comportamiento de fases y aplicaciones
Propositos del comportamiento de fases y aplicacionesPropositos del comportamiento de fases y aplicaciones
Propositos del comportamiento de fases y aplicaciones
 
TALLER PAEC preparatoria directamente de la secretaria de educación pública
TALLER PAEC preparatoria directamente de la secretaria de educación públicaTALLER PAEC preparatoria directamente de la secretaria de educación pública
TALLER PAEC preparatoria directamente de la secretaria de educación pública
 
Flujo multifásico en tuberias de ex.pptx
Flujo multifásico en tuberias de ex.pptxFlujo multifásico en tuberias de ex.pptx
Flujo multifásico en tuberias de ex.pptx
 
El proyecto “ITC SE Lambayeque Norte 220 kV con seccionamiento de la LT 220 kV
El proyecto “ITC SE Lambayeque Norte 220 kV con seccionamiento de la LT 220 kVEl proyecto “ITC SE Lambayeque Norte 220 kV con seccionamiento de la LT 220 kV
El proyecto “ITC SE Lambayeque Norte 220 kV con seccionamiento de la LT 220 kV
 
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONALCHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
 
Una estrategia de seguridad en la nube alineada al NIST
Una estrategia de seguridad en la nube alineada al NISTUna estrategia de seguridad en la nube alineada al NIST
Una estrategia de seguridad en la nube alineada al NIST
 
Flujo potencial, conceptos básicos y ejemplos resueltos.
Flujo potencial, conceptos básicos y ejemplos resueltos.Flujo potencial, conceptos básicos y ejemplos resueltos.
Flujo potencial, conceptos básicos y ejemplos resueltos.
 
sistema de construcción Drywall semana 7
sistema de construcción Drywall semana 7sistema de construcción Drywall semana 7
sistema de construcción Drywall semana 7
 
SOLICITUD-PARA-LOS-EGRESADOS-UNEFA-2022.
SOLICITUD-PARA-LOS-EGRESADOS-UNEFA-2022.SOLICITUD-PARA-LOS-EGRESADOS-UNEFA-2022.
SOLICITUD-PARA-LOS-EGRESADOS-UNEFA-2022.
 
clases de dinamica ejercicios preuniversitarios.pdf
clases de dinamica ejercicios preuniversitarios.pdfclases de dinamica ejercicios preuniversitarios.pdf
clases de dinamica ejercicios preuniversitarios.pdf
 
Unidad 3 Administracion de inventarios.pptx
Unidad 3 Administracion de inventarios.pptxUnidad 3 Administracion de inventarios.pptx
Unidad 3 Administracion de inventarios.pptx
 
Proyecto de iluminación "guia" para proyectos de ingeniería eléctrica
Proyecto de iluminación "guia" para proyectos de ingeniería eléctricaProyecto de iluminación "guia" para proyectos de ingeniería eléctrica
Proyecto de iluminación "guia" para proyectos de ingeniería eléctrica
 
Seleccion de Fusibles en media tension fusibles
Seleccion de Fusibles en media tension fusiblesSeleccion de Fusibles en media tension fusibles
Seleccion de Fusibles en media tension fusibles
 
Reporte de Exportaciones de Fibra de alpaca
Reporte de Exportaciones de Fibra de alpacaReporte de Exportaciones de Fibra de alpaca
Reporte de Exportaciones de Fibra de alpaca
 
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...
 
Caldera Recuperadora de químicos en celulosa tipos y funcionamiento
Caldera Recuperadora de químicos en celulosa  tipos y funcionamientoCaldera Recuperadora de químicos en celulosa  tipos y funcionamiento
Caldera Recuperadora de químicos en celulosa tipos y funcionamiento
 
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESAIPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
 

Compilación de programas

  • 1. Compilación de programas con archivos Ayala Alberto Castillo Ignacio Isaac Aragon
  • 2. Grandes Programas Cuando se escriben grandes programas se debe generar un proyecto el cual será dividido en módulos. Donde solo uno de ellos contiene el archivo main().c Los demás archivos contienen las demás funciones que el programa requiera. VENTAJAS -Los módulos se dividen de manera natural en grupo comunes de funciones. -Se pueden compilar los modulos separadamente y ligarlos con los ya compilados. -Las utilerias como make pueden ayudar a mantener sistemas grandes.
  • 3. Archivos cabecera Son archivos en los que se almacena un módulo o conjunto de definiciones, estos archivos tienen la extensión “.h”. Para definirlos en la función principal o main, basta con escribir algo así como lo siguiente: #include "mi_cabecera.h" Con lo anterior, le estamos diciendo al programa que contenga el archivo módulo “mi_cabecera.h”
  • 4. Variables y Funciones Externas cada variable y argumento definido dentro de las funciones son locales así mismas, si se desea declarar una variable global es necesario declarar fuera de dichas funciones. Alcance de variables externas. Es decir si una variable externa(Global) es declarada después de la función main() dicha función no podrá solicitar dicha variable.
  • 5. ALCANCE DE LAS FUNCIONES Y VARIABLES EN C Una función es capaz de reconocer todas las variables de tipo global que hayan sido declaradas antes de la misma función. Adicionalmente, toda variable declarada dentro de una función se destruye al finalizar esta. Esta es la razón por la que todos los prototipos de funciones deben escribirse o incluirse antes del cuerpo del código.
  • 6. Ejemplo 1 En el código de la derecha describe un ejemplo en el que en la función “intenta_acceder” intenta usar la variable que no es global “variable”. El código no compila.
  • 7. Ejemplo 2 El ejemplo de la derecha muestra un ejemplo en el que las variables son correctamente definidas y llamadas pero en cambio las funciones no. No es posible acceder a la función “intenta_acceder” desde la función main ya que esta fué declarada después de esta.
  • 8. Ejemplo 3 El ejemplo 3 es un programa correcto: La función “intenta_acceder” es llamada desde la función main y el main si la conoce ya que fué declarada antes de esta. Las variables con nombre “variable” son totalmente diferentes y las funciones nisiquiera lo pueden notar, cada una es local a su función y muere al finalizar esta; al llamar a “intenta_acceder” se genera otro bloque de memoria que sólo esa función conoce.
  • 9. Variables externas Son utilizadas cuando se requiere hacer referencia a una variable aún no declarada o que se encuentra definida en un módulo externo. La definición de la variable sólo debe hacerse una vez. Ejemplo de uso: main.c int arr[100]; arch.c extern int arr[];
  • 10. VENTAJAS -Es más fácil trabajar en Equipo ya que cada uno puede trabajar en un módulo. -Puede ser usado un estilo orientado a objetos Cada archivo define un tipo particular de objeto como un tipo de dato y las operaciones en ese objeto como funciones. La implementación del objeto puede mantenerse privado al resto del programa. -Los archivos pueden contener todas las funciones de un grupo relacionado. -Objetos bien implementados o definiciones de funciones pueden ser reusadas en otros programas, con lo que se reduce el tiempo de desarrollo. -En programas muy grandes cada función principal puede ocupar un propio archivo. -Cuando los cambios son hechos a un archivo, solamente ese archivo necesita ser recompilado para reconstruir el programa.
  • 11. Dividir Un Programa en varios archivos cada archivo tendrá que contender una o más funciones y sólo en uno se incluirá la función main() mientras que los otros serán llamados de otros archivos tratados como una biblioteca o cabecera. #include “Archivo1.h” es como declara que en ese programa se utilizará dicho archivo.
  • 12. Organización de los datos de los datos en cada archivo Es importante organizar los datos en un cierto orden en cada uno de los archivos creados: 1. Cabeceras de archivos y tipos de datos más importantes 2. declaración de variables globales y externas 3. una o más funciones (destacando la importancia de su orden) Ese dependiendo en cuanto al gusto del programador en uso de funciones implícita explícita.
  • 13. La utilería make Esta utilería sirve para mantener en buen funcionamiento un gran conjunto de módulos de programas. Es muy útil si se desea por ejemplo, compilar varios archivos .c y algunos de ellos ya fueron previamente compilador: Con la utilería make podemos evitar compilar nuevamente estos archivos indicando que estos archivos tienen la extensión “.o”. Si tenemos los archivos: main.c f1.c ...... fn.c Entonces podemos compilar estos archivos con la siguiente línea de comandos: gcc -o main main.c f1.c ....... fn.c Y si los archivos fi.c y fj.c ya fueron previamente compilados, podemos compilar todo nuevamente así: gcc -o main main.c f1.c ... fi.o ... fj.o ... fn.c
  • 14. Compilar archivos con la utilería make La programación make es directa, basta con escribir una línea de comandos en un archivo de texto con ciertas reglas en las que se indique la forma en que se deben compilar los archivos. Debe crearse un archivo con nombre Makefile y en este mismo directorio escribir el comando make desde consola para así ejecutarlo. De este modo las cosas que hayas indicado en el archivo se ejecutarán por el sistema operativo. Los archivos make están compuestos de: -Dependencias: lado_izquierdo:lado_derecho(el lado izquierdo nombra el nuevo destino o tarjet mientras que el lado derecho nombra los archivos de los que depende el nuevo)
  • 15. Creación de un archivo make El siguiente es un ejemplo de archivo make: prog: prog.o f1.o f2.o gcc -o prog prog.o f1.o f2.o -lm ... prog.o: cabecera.h prog.c gcc -c prog.c f1.o: cabecera.h f1.c gcc -c f1.c f2.o: .... ... La utilería make lo interpretará de la siguiente forma: 1. prog depende de tres archivos: prog.o, f1.o y f2.o. Si cualquiera de los archivos objeto ha cambiado desde la última compilación los archivos deben ser religados. 2. prog.o depende de 2 archivos, si estos han cambiado prog.o deberá ser recompilado. Lo mismo sucede con f1.o y f2.o. Los últimos 3 comandos en makefile son llamados reglas explícitas -- ya que los archivos en los comandos son listados por nombre.
  • 16. Creación de un archivo make Se pueden usar reglas implícitas en makefile para generalizar reglas y hacer más compacta la escritura. Si se tiene: f1.o: f1.c gcc -c f1.c f2.o: f2.c gcc -c f2.c se puede generalizar a: .c.o: gcc -c $< Lo cual se lee como .ext_fuente.ext_destino: comando donde $< es una forma breve para indicar los archivos que tienen la extensión .c Se pueden insertar comentarios en un Makefile usando el símbolo #, en donde todos los caracteres que siguen a # son ignorados.
  • 17. Uso de macros con make Se pueden definir macros para que sean usadas por make: Se definen en una forma simple, por ejemplo: FUENTES = main.c f1.c f2.c CFLAGS = -ggdb -C LIBS = -lm PROGRAMA = main OBJETOS = (FUENTES: .c = .o) En donde (FUENTES: .c = .o) cambia la extensión .c de los fuentes por la extensión.o Para referirse o usar una macro con make se debe hacer $(nomb_macro), por ejemplo: $(PROGRAMA) : $(OBJETOS) $(LINK.C) -o $@ $(OBJETOS) $(LIBS) En el ejemplo mostrado se observa que: ● La línea que contiene $(PROGRAMA) : $(OBJETOS) genera una lista de dependencias y el destino. ● Se emplean macros internas como $@. Existen varias macros internas a continuación se muestran algunas de ellas: $* Parte del nombre del archivo de la dependencia actual sin el sufijo. $@ Nombre completo del destino actual. $ Archivo .c del destino Un ejemplo de un makefile para el programa modular discutido previamente se muestra a continuación:
  • 18. Uso de macros con make # # Makefile # FUENTES.c=main.c EscribirMiCadena.c INCLUDES= CFLAGS= SLIBS= PROGRAMA=main OBJETOS=$(FUENTES.c:.c=.o) # Destino (target) especial (inicia con .) .KEEP_STATE: debug := CFLAGS=-ggdb all debug: $(PROGRAMA) $(PROGRAMA): $(INCLUDES) $(OBJETOS) $(LINK.c) -o $@ $(OBJETOS) $(SLIBS) clean: rm -f $(PROGRAMA) $(OBJETOS)