Compilacion en C - GCC
Estoy compilando programas en C con el GCC.
Este programa enlaza varios programas C entre si.
Quiero que estos enlaces sean dinámicos y que cuando modifique uno de ellos (cualquier programa) no tenga que hacer referencia en la compilación a los que llama .
Ej. Tengo 3 pgrms.
PM que llama al PM_1 y este a su vez al PM_11. Si modifico el PM_1 al compilarlo no quiero que sea necesario hacer referencia al programa que el llama PM_11, ni al llamante PM. ¿Esto es posible? ¿Cómo?
¿Qué parámetros se dan en gcc para estos casos?
Gracias
Este programa enlaza varios programas C entre si.
Quiero que estos enlaces sean dinámicos y que cuando modifique uno de ellos (cualquier programa) no tenga que hacer referencia en la compilación a los que llama .
Ej. Tengo 3 pgrms.
PM que llama al PM_1 y este a su vez al PM_11. Si modifico el PM_1 al compilarlo no quiero que sea necesario hacer referencia al programa que el llama PM_11, ni al llamante PM. ¿Esto es posible? ¿Cómo?
¿Qué parámetros se dan en gcc para estos casos?
Gracias
Para eso existe MAKE:
La idea es indicarun objetibo a construir, las dependecias y el modo de obtener el objetibo:
Por ejemplo para hacer un programa que use varios ficheros con estas dependencias:
f1.c usa rutinas que estan en f2.c y f3.c
f2.c usa rutinas que estan en f4.c y f3.c
f3.c y f4.c no dependen de nadie.
Asi que creamos un arcchivo llamado "makefile" que diga:
# archivo makefile de ejemplo
# <--- asi se ponen los comentarios :-)
# El programa depende de todos los obj.
prog.exe: f1.obj f2.obj f3.obj f4.obj
gcc -oprog.exe f1.obj f2.obj f3.obj f4.obj
f1.obj: f2.obj f3.obj
gcc -c f1.c f2.obj f3.obj
f2.obj: f3.obj f4.obj
gcc -c f2.c f3.obj f4.obj
#Esta vien, f3.obj depende de si se modifica f3.c :-)
f3.obj: f3.c
gcc -c f3.c
f4.obj: f4.c
gcc -c f4.c
# fin del makefile
Bien, pensando de la manera "objetibo, de que depende, que tengo que hacer para que se contrulla" podemos hacer proyectos inmensos con gran eficiencia.
Oviamente cuando no exista ningun obj se compìlara todo siguiendo el arbol de dependencias que armamos.
Para mas informacion te remito al info o al man de make.
Suerte.
La idea es indicarun objetibo a construir, las dependecias y el modo de obtener el objetibo:
Por ejemplo para hacer un programa que use varios ficheros con estas dependencias:
f1.c usa rutinas que estan en f2.c y f3.c
f2.c usa rutinas que estan en f4.c y f3.c
f3.c y f4.c no dependen de nadie.
Asi que creamos un arcchivo llamado "makefile" que diga:
# archivo makefile de ejemplo
# <--- asi se ponen los comentarios :-)
# El programa depende de todos los obj.
prog.exe: f1.obj f2.obj f3.obj f4.obj
gcc -oprog.exe f1.obj f2.obj f3.obj f4.obj
f1.obj: f2.obj f3.obj
gcc -c f1.c f2.obj f3.obj
f2.obj: f3.obj f4.obj
gcc -c f2.c f3.obj f4.obj
#Esta vien, f3.obj depende de si se modifica f3.c :-)
f3.obj: f3.c
gcc -c f3.c
f4.obj: f4.c
gcc -c f4.c
# fin del makefile
Bien, pensando de la manera "objetibo, de que depende, que tengo que hacer para que se contrulla" podemos hacer proyectos inmensos con gran eficiencia.
Oviamente cuando no exista ningun obj se compìlara todo siguiendo el arbol de dependencias que armamos.
Para mas informacion te remito al info o al man de make.
Suerte.
