Linux - Duda

 
Vista:

Duda

Publicado por VoidPointer (26 intervenciones) el 16/08/2005 21:13:37
Estaab instruyendome para usar el make y enteder de que se trataba, todo muy lindo, pero me llamo la atencion algo, cuando uno compila un proyecto grande suele tener varios ficheros .C segun el texto que encontre, ahora viendo el grafico de dependencias yo asumo que que solo puede tener un solo main , si no como es posible , aver si puedo dibjar esto

Compilacion
File.c ---------------File.s ----------------File.o
\
--------------------a.out
/
File2.c -------------- File2.s --------------File2.o

Osa de dos FILE.C hace dos .O y lñuego los junta creando el programa, pero solo puede haber un main, no setria mejor hacer solo liberias y un solo .C????la compilacion es directa algo como

File.C
\
---------------------File.S-----------File.o----------a.out
/
Lib.h
creoq ue no termino de enteder el tema de la union de los .O
quisas alguien pueda explicarme ya que yo siempre creo liberrias y tengo solo un main y un FILE.C,

Saludos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Duda

Publicado por chuidiang (101 intervenciones) el 17/08/2005 16:24:50
Hola:

Si vas a compilar todo una sola vez, da igual usar make o un script que lo compile todo y da igual como organices el codigo.

El problema es si tienes un proyecto grande y lo tienes que recompilar varias veces mientras estas desarrollando. Imagina un proyecto en el que una compilacion completa tarde dos horas. Haces unas pruebas, corriges un par de lineas de codigo y .... otras dos horas de compilado.

make, si organizas bien el codigo, te ayuda a compilar solo lo que necesitas compilar, sin tener que recompilar lo que ya esta compilado.

Por ello, si tienes varios .c (solo uno tiene el main), make crea varios .o y luego lo junta todo en un ejecutable. Si tocas el fuente de un .c, make solo recompila ese .c para obtener un nuevo .o, reaprovecha los .o anteriores y te genera el ejecutable. Ahorras el tiempo de compilar los demas .c

Es mas, make, adecuadamente configurado, sabe de que ficheros .h depende cada .c, de forma que si tocas un .h solo compila aquellos .c que lo necesitan.

Meter el codigo en ficheros .h no es buena idea. En un .h solo debería haber definiciones de clases, #define, prototipos de funciones, etc. Si metes codigo en un .h y hay dos ficheros .c que incluyen ese .h, ese codigo se compila dos veces, gastando el doble de tiempo.

Echa un ojo a http://www.geocities.com/chuidiang/herramientas/makefile.html a ver si te aclara algo más. También te aconsejaría que miraras http://www.geocities.com/chuidiang/herramientas/librerias.html.

Se bueno.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar