elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Problema con makefile en C
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema con makefile en C  (Leído 2,147 veces)
Kefren


Desconectado Desconectado

Mensajes: 515


0x1BADB002


Ver Perfil WWW
Problema con makefile en C
« en: 22 Junio 2013, 19:45 pm »

Hola a todos. Llevo ya bastante rato liado con un problema al que no encuentro solución, y no sé qué es lo que puede ocurrir. Estoy haciendo una práctica para la universidad, para la asignatura de Metodología de la Programación, donde damos C.

Pues bien, la práctica me la he inventado yo y combino elementos de todo lo que se ha visto a durante el cuatrimestre, con el fin de repasarlo todo. Tengo el siguiente makefile:

Código:
LIB_DIR = lib/
LIB = $(LIB_DIR)libProcesos.a
SRC_DIR = funcs/
INCLUDE_DIR = include/
BUILD_DIR = build/
BIN_DIR = bin/
OBJ = $(BUILD_DIR)existeFichero.o
FLAGS = -g -c

existeFichero.o:
gcc $(FLAGS) $(SRC_DIR)existeFichero.c
mv existeFichero.o $(BUILD_DIR)
libProcesos.a:
ar -r $(LIB) $(OBJ)
procesos.out:
gcc -o $(BIN_DIR)procesos.out main.c $(LIB)

A la hora de ejecutar make en la consola de Linux, SIEMPRE y digo SIEMPRE, me hace únicamente la compilación del primer archivo que haya. Es decir, sólo me creará existeFichero.o, mientras que libProcesos.a y procesos.out los ignora y ni si quiera entra en sus respectivas secciones.

He probado todo, cambiar el orden, etc. Y siempre me hace sólo el primero que haya. Si por ejemplo pongo el primero a procesos.out pues sólo me compilará ese.

¿Alguien sabe qué leches puede ocurrir? Agradecería un poco de ayuda.  :-(

SaluDOS


En línea

Khronos14


Desconectado Desconectado

Mensajes: 443


A lie is a lie


Ver Perfil WWW
Re: Problema con makefile en C
« Respuesta #1 en: 22 Junio 2013, 22:42 pm »

Así no se hacen archivos de compilación Makefile, la gracia de estos archivos es hacerlos para que sólo te recompilen los módulos desactualizados. Te pongo un ejemplo:


Código:
CC=gcc

all: main.o prueba.o funcion.o
$(CC) main.o prueba.o funcion.o -o programa

main.o: main.c
$(CC) -c main.c

prueba.o: prueba.c prueba.h
$(CC) -c prueba.c

funcion.o: funcion.c funcion.h
$(CC) -c funcion.c

Escribiendo un simple make, comprueba si existen y si están actualizados (utiliza la fecha de modificación del fichero de código fuente y la del binario) todos los módulos: main.o, prueba.o y funcion.o. En caso de que no lo estén los compila y luego genera el archivo ejecutable final. El parámetro -c compila pero no linkea, es decir se generan archivos .o.

Los archivos Makefile también son muy útiles si le pones opciones como:

Código:
CC=gcc

all: main.o prueba.o funcion.o
$(CC) main.o prueba.o funcion.o -o programa

main.o: main.c
$(CC) -c main.c

prueba.o: prueba.c prueba.h
$(CC) -c prueba.c

funcion.o: funcion.c funcion.h
$(CC) -c funcion.c

clean:
rm -r -f *.o

Si ejecutas en la línea de comandos make clean, se borrarán todos los archivos *.o.

Existen macros para no tener que hacer esto archivo por archivo, buscando un poco en google lo encontrarás, pero para explicar es mejor este método.

Saludos.


En línea

Kefren


Desconectado Desconectado

Mensajes: 515


0x1BADB002


Ver Perfil WWW
Re: Problema con makefile en C
« Respuesta #2 en: 23 Junio 2013, 17:35 pm »

Gracias por la respuesta Khronos14, es cierto que tengo algunos fallos de concepto que estoy intentando corregir xD.

Buscaré información sobre los makefile. Aunque ya he conseguido que me compile todos los ficheros usando all.

SaluDOS
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
AYUDA- Could not create a makefile (dev)
Programación C/C++
alexis33de 0 3,319 Último mensaje 22 Diciembre 2010, 01:31 am
por alexis33de
Duda con Makefile [Solucionado]
Scripting
leogtz 5 4,264 Último mensaje 10 Agosto 2011, 08:59 am
por leogtz
como ejecutar un Makefile en windows?
Programación General
CrÄsH 0 5,844 Último mensaje 20 Diciembre 2011, 14:06 pm
por CrÄsH
Aprediendo a usar makefile
Programación C/C++
andrewmetal93 1 2,111 Último mensaje 10 Mayo 2012, 03:58 am
por x64core
Problema al compilar por makefile
Programación C/C++
t4r0x 2 1,816 Último mensaje 16 Noviembre 2014, 15:06 pm
por Miky Gonzalez
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines