1 Ejemplos de Makefiles Álvaro Navarro, Julián Nora, Luis M. Vaquero Octubre 2009 3º Informática de Sistemas Ampliación de Sistemas Operativos.

Slides:



Advertisements
Presentaciones similares
Universidad Tecnológica Nacional Facultad Regional Buenos Aires Ingeniería en Sistemas de Información Introducción a C Sistemas Operativos.
Advertisements

Universidad Tecnológica Nacional Facultad Regional Buenos Aires Ingeniería en Sistemas de Información Introducción a C Sistemas Operativos.
Métodos y parámetros.
Introducción a C#.
Introducción al lenguaje C
PROGRAMACIÓN EN C.
El lenguaje de programación C - El primer programa -
MANUAL EXPRESS DE C J.M.sevilla.
Listas enlazadas c++ Prof. Franklin Cedeño.
Access Bases de datos.
UNIDAD II: FUNDAMENTOS DE LA PROGRAMACIÓN ESTRUCTURADA.
© Manuel ColladoMake-1 Utilidad Make. © Manuel ColladoMake-2 Contenido n Objetivo y funciones n Proceso de compilación y montaje n.
Introducción al lenguaje de especificación JML
Temas Operaciones básicas Instalando el compilador
Una variable en un programa es algo con un nombre, cuyo valor puede variar. La manera en que el compilador y enlazador maneja esto es asignando un bloque.
Programación 1 Presentación de c++
Introducción al lenguaje C++
Acciones y funciones Concepto
La estructura básica de los programas en java, algo a tener en cuenta y que debemos recordar siempre es el archivo debe llevar el nombre de la clase con.
Tema 7: Polimorfismo Antonio J. Sierra. Índice Introducción. Sobrecarga de métodos. Objetos como parámetros. Paso de argumentos. Devolución de objetos.
2 Acciones y funciones 2.1 Concepto
Funciones en lenguaje C
CI TEORIA semana 8 Subprogramas o funciones Definición de funciones.
El lenguaje de programación C - Funciones -
Estructuración y modularidad de los programas Fundamentos de Programación/ Programación I
POO Java Módulo 3 Elementos de programas Identificadores
T A D : Módulos Los módulos proporcionan la única manera de construir tipos abstractos de datos (TAD) en Haskell.
Java Orientado a Objetos CLASES,OBJETOS Y MÉTODOS
Clases y objetos La unidad fundamental de programación OO son las clases. Conjunto de métodos y semántica Qué se va a hacer POO Clase: que define la implementación.
Tema 6: Clases Antonio J. Sierra.
Operadores de comparación en PHP Programación en Internet II.
ATC-DistribuidasUniversidad de Oviedo / Dpto. de Informática Programación con OSF RPC y Microsoft RPC.
Semana 5 Subprogramas..
El lenguaje de programación Java
Estructura de un programa en C
Archivos.
Informática Ingeniería en Electrónica y Automática Industrial
ESTRUCTURA DE DATOS EN JAVA
Un programa no es nada mas que una serie de instrucciones dadas al ordenador en un lenguaje entendido por el, para decirle exactamente lo que queremos.
Administración de Proyectos de desarrollo de Software Ciclo de vida de un proyecto Enfoque moderno Temas Componentes Directivas Declaraciones globales.
Material de apoyo Unidad 4 Estructura de datos
Programación Orientada a Objetos
El Lenguaje C en CGI El ANSI C, uno de los lenguajes de programación más conocidos, utiliza la función getenv(),definida en el archivo de cabecera stdlib.h,
Elementos básicos del lenguaje
Bibliotecas Nacen a partir de la necesidad de la compilación por módulos. Lo cual consiste en separar el programa principal de aquellas funciones que se.
Elementos básicos del lenguaje
Introducción a la tecnología Realizado por: Miguel Ángel Arias.
José Luis torres Álvaro José ortega MACROS EN EXCEL.
MAKE-1 Utilidad ‘Make’. Utilidad ‘make’ MAKE-2 Contenido n Objetivo y funciones n Proceso de compilación y montaje n Dependencias y regeneración selectiva.
Make akefile.html.
NOMBRE: LUIS VIRACOCHA CURSO: 5 B. Uso de la línea de comandos Muchas ordenes de gestión del sistema operativo El entorno de texto, es un sistema muy.
CARACTERÍSTICAS Es un lenguaje de programación estructurado de propósito general. Está estrechamente asociado al sistema operativo UNIX, ya que el propio.
Vamos a tratar algunos temas que es necesario conocer a la hora de administrar un sistema informático y que nos van a ser útiles sin importar el sistema.
Pelando la cebolla 1. Aquí discutiremos lo necesario del lenguaje necesario para implementar una metodología que llamo “pelando la cebolla”. Permite abordar.
PHP con Bases de Datos Tema 5 Funciones Introducción Valor de una Función Función para obtener fecha actual. Documentación de Funciones Funciones de Usuario.
2008 Escuela de Informática y Telecomunicaciones, DuocUC Escuela de Informática y Telecomunicaciones Clase 9: Funciones, variables y arreglos en BASH Nombre.
Software.
UNIDAD 4: Introducción a la Lógica Computacional Objetivo : Interpretar y aplicar adecuadamente los fundamentos básicos de la estructura y funcionamiento.
Práctica Profesional PHP.
Que es make? Make es un comando que se utiliza para la creació n de archivos ejecutables o programas, su instalación y la limpieza de archivos temporales.
CLASE 10. AGENDA 1 Repaso 2 Operadores 3 Directivas 14 Entrada y Salida de Datos.
Lenguaje de programación c
 Las funciones son un conjunto de instrucciones que realizan una tarea específica. En general toman unos valores de entrada, llamados parámetros y proporcionan.
Funciones Copyright © 2005 Unidad 1. Copyright © 2005 Objetivos del Aprendizaje Explicar la naturaleza y usos de las funciones. Describir algunas funciones.
MEMORIA DINÁMICA.
Lenguaje de Programación II PLAN DE EVALUACIÓN CONTENIDO MODALIDAD DE EVAL. PONDERACIÓN INTRODUCCIÓN BÁSICA AL LENGUAJE DE PROGRAMACIÓN.
Introducción al Lenguaje C y al Visual C++. Lenguaje C El lenguaje C se conoce como un lenguaje compilado. Es un lenguaje estructurado, ya que permite.
Estructuras de control selectivas Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión Práctica 3.
3.6 Manejo de E/S Estructuras En la creación de soluciones para algunos problemas surge la necesidad de agrupar datos de diferente tipo o de manejar datos.
Hello hola.
Transcripción de la presentación:

1 Ejemplos de Makefiles Álvaro Navarro, Julián Nora, Luis M. Vaquero Octubre º Informática de Sistemas Ampliación de Sistemas Operativos

2 ¿Qué es un makefile? Los Makefiles son ficheros empleados por un programa, make, para automatizar tareas A medida que los programas crecen en complejidad y tamaño, su construcción se vuelve más compleja: $ gcc -I./poker-eval/include -O3 -mcpu=pentiumpro -march=pentiumpro -fomit-frame-pointer -ffast-math -static ByteArray.c queue.c access.c message.c bot.c util.c read solution.c hand strength.c util game def.c hash.c translate solution.c make bucket game.c new poker.c sequence form.c tableau.c avl tree.c sequence form solution.c -L../game theory/poker-eval/lib -lpoker -lm -o psopti Los Makefiles evitan los errores que pueden surgir y facilitan que otros compilen un código cuyas particularidades desconocen.

3 Creación de makefiles El fichero debe llamarse siempre Makefile’ o ’makefile’ o si se quiere otro nombre hay que emplear ’make -f filename’ En el makefile habrá una serie de reglas con el siguiente formato: target... : pre-requisitos... comando... Cada regla especifica los pre-requisitos necesarios para ejecutar los comandos IMPORTANTE: las líneas de comandos comienzan por un carácter de tabulador Recordad que los pre-requisitos pueden ser a su vez otros targets Make admite comentarios precedidos de “#” Con “\” se puede continuar una línea del make en la siguiente, mejorando la legibilidad

4 Uso de makefiles make hacen que se compruebe si los pre-requisitos están actualizados. Si éstos son más recientes que el target, entonces se ejecutan los comandos. make sin target hace que se busque el primer target del fichero. Los fallos típicos con make tienen que ver con: que haya un pre-requisito que no encuentra ni sabe cómo crear que alguno de los comandos del target devuelva un error

5 Definición de Variables En makefiles, las variables evitan errores por tener un mismo elemento duplicado en varias ubicaciones. OBJ = hola.o # declaración de variable OBJ $(OBJ) # uso de la variable Algunas variables típicamente empleadas: CC – nombre del compilador C que se está usando CFLAGS – opciones que se pasan al compilador LIBS – librerías que se están enlazando DEFS - defines (como -DMEMWATCH -DMW STDIO)‏

6 Queremos construir un programa, hola.c #include “stdio.h” #include ”memwatch.h” int main(){ printf("Hola mundo"); return 0 } Se compilaría con: gcc -Wall -ansi -DMEMWATCH -DMW STDIO hola.c -o hola CC = gcc DEFS = -DMEMWATCH -DMW STDIO CFLAGS = -Wall -ansi $(DEFS)‏ OBJECTS = hola.c memwatch.o hola: $(OBJECTS)‏ $(CC) $(CFLAGS) $(OBJECTS) -o hola Ejemplo 1

7 foo: foo.o helper.o gcc -Wall foo.o helper.o -o foo bar: bar.o helper.o gcc -Wall bar.o helper.o -o bar bar.o: bar.c gcc bar.c -c -o bar foo.o: foo.c foo.h gcc -ansi -Wall -c foo.c -o foo.o Ejemplo 2 CC= gcc LD= gcc CC_FLAGS = -ansi -Wall -c LD_FLAGS = -Wall all: foo bar foo: foo.o helper.o $(LD) $(LD_FLAGS) foo.o helper.o -o foo bar: bar.o helper.o $(LD) $(LD_FLAGS) bar.o helper.o -o bar bar.o: bar.c $(CC) $(CC_FLAGS) bar.c foo.o: foo.c foo.h $(CC) $(CC_FLAGS) foo.c clean: rm -f *.o foo bar

8 gcc main.c hello.c factorial.c -o hello En un makefile sería: all: gcc main.c hello.c factorial.c -o hello Añadiendo dependencias, quedaría: all: hello hello: main.o factorial.o hello.o gcc main.o factorial.o hello.o -o hello main.o: main.c gcc -c main.c factorial.o: factorial.c gcc -c factorial.c hello.o: hello.c gcc -c hello.c clean: rm -rf *o hello Ejemplo 3

9 Empleando variables: CC=gcc CFLAGS=-c -Wall all: hello hello: main.o factorial.o hello.o $(CC) main.o factorial.o hello.o -o hello main.o: main.c $(CC) $(CFLAGS) main.c factorial.o: factorial.c $(CC) $(CFLAGS) factorial.c hello.o: hello.c $(CC) $(CFLAGS) hello.c clean: rm -rf *o hello Ejemplo 4

10 Empleando variables: CC=gcc CFLAGS=-c -Wall LDFLAGS= SOURCES=main.c hello.c factorial.c OBJECTS=%.o EXECUTABLE=hello all: $(EXECUTABLE)‏ $(EXECUTABLE): $(OBJECTS) $(CC) $(LDFLAGS) $(OBJECTS) -o %.o: $(SOURCES)‏ $(CC) $(CFLAGS) $^ -o Ejemplo 5

11 Ejemplo 6 el objetivo de la regla en la que aparece. $^En la lista de requisitos de la regla en que aparece. $?Es la lista de requisitos más recientes que el objetivo. $<Es el primer requisito de la regla. Veamos como aplicarlos: CC=gcc CFLAGS=-Wall -g RM=rm hola: hola.o auxhola.o $(CC) -o $^ hola.o: hola.c $(CC) $(CFLAGS) -c -o $^ auxhola.o: auxhola.c $(CC) $(CFLAGS) -c -o $^ clean: $(RM) *.o hola

12 CC=gcc CFLAGS=-I. DEPS = holafunc.h %.o: %.c $(DEPS)‏ $(CC) -c -o $< $(CFLAGS)‏ holamake: holamake.o holafunc.o $(CC) -o holamake holamake.o holafunc.o $(CFLAGS)‏ Ejemplo 7