frankKM escribió:sugerencia
Software libre
quizas
mmmm... estoy compilando en una maquina unix (HP-UX) y es ahi donde tiene que funcionar, xdd.
CaDeTe1 escribió:Si no he entendido mal, no te funcionaría el programa si haces:
gcc -c -Wall moduloB.c
gcc -c -Wall moduloA.c
gcc -c -Wall moduloC.c
gcc -c -Wall menu.c
gcc moduloB.o moduloA.o moduloC.o menu.o
¿Pero si quitas moduloA (p. ej) si?
Por cierto, secundo lo del makefile, compilar y enlazar todo el rato es un coñazo. Supongo que sería algo así:
menu: moduloB.o moduloA.o moduloC.o menu.o
gcc -Wall moduloB.o moduloA.o moduloC.o menu.o -o menu
moduloB.o: moduloB.c moduloB.h
gcc -c -Wall moduloB.c
moduloA.o: moduloA.c moduloA.h moduloB.h
gcc -c -Wall moduloA.c
moduloC.o: moduloC.c moduloC.h moduloB.h
gcc -c -Wall moduloC.c
menu.o: moduloA.h moduloC.h menu.c
gcc -c -Wall menu.c
PD: Yo suelo poner '-Wall' para los warnings, es útil para ver errores.
Si, si quito el muduloA y todas las llamadas de funciones que hay en el menu respecto al moduloA, si que funciona perfectamente el menu.
Para compilar, lo que tengo es un script que me lo hace todo.
Bueno, ahora estoy haciendo el makefile (mmm.. nunca lo habia usado.. y me da algun que otro fallo)
bueno, en concreto el makefile que estoy haciendo es este
menu2: funciones.o fcotizaciones.o mezclaNaturalSD.o mezclaPolifasica.o menu2.o
gcc -Wall funciones.o fcotizaciones.o mezclaNaturalSD.o mezclaPolifasica.o menu2.o -o menu
funciones.o: funciones.c funciones.h
gcc -c -Wall funciones.c
fcotizaciones.o: fcotizaciones.c fcotizaciones.h funciones.h
gcc -c -Wall fcotizaciones.c
mezclaNaturalSD.o: mezclaNaturalSD.c mezclaNaturalSD.h fcotizciones.h
gcc -c -Wall mezclaNaturalSD.c
mezclaPolifasica.o: mezclaPolifasica.c mezclaPolifasica.h fcotizciones.h
gcc -c -Wall mezclaPolifasica.c
menu2.o: mezclaNaturalSD.h mezclaNatural.h menu2.c
gcc -c -Wall menu2.c
y me da fallo en la linea 8, en la de mezclaNaturalSD, me dice que debe de haber un separador en la reglas de la linea8
De todas formas el scrip que uso para compilar es el siguiente
gcc -c funciones.c
gcc -c fcotizaciones.c
gcc -c mezclaPolifasica.c
gcc -c mezclaNaturalSD.c
gcc funciones.o fcotizaciones.o mezclaNaturalSD.o mezclaPolifasica.o menu2.c
El problema viene al crear el objeto del menu2.o que ess donde falla.
Lo siento por el toston.
Saludos.
Editado:
He encontrado una solucion un tanto guarra.. pero por lo menos funciona...
Enconcreto lo que he hecho ha sido (usando el simil de nombre de modulo...)
el moduloA usa el modulo B, y el modulo C en vez de hacer uso del moduloB, hace uso del moduloA, (aunque realmente lo que usa son las operaciones del modulo B)
Y asi funciona bien.. pero me parece una solucion un tanto mmm.. chapucera.
Si sabeis como podria solucionarlo sin hacer esa guarrada os lo agradeceria.
Saludos.
Edicion 2 !!
Ya esta todo arreglado y de forma no chapucera... simplemente con poner sentencias para el compilador ha sido resuelto el problema...
En concreto para los que quieran saber como, en el modulo que se compartia, (el moduloB) he puesto:
#ifndef _MODB_
#define _MODB_
struct.....
void MisFunciones........
...
#endif
Con esto esta arreglado... y pensar que nunca usaria sentencias en tiempo de compilacion, xddd.
Saludos a todos y gracias por la ayuda