Underc0de

Foros Generales => Dudas y pedidos generales => Mensaje iniciado por: Hackmundy en Septiembre 18, 2016, 06:37:50 PM

Título: como empaquetar todo (librerias,.c,etc)en un .out en C
Publicado por: Hackmundy en Septiembre 18, 2016, 06:37:50 PM
Hola como estan no entiendo aun mucho de los makefile, pero me gustaria saber como puedo unir todas las librerias y codigo fuente usadas en .out.

SALUDOS y disculpen mi idnorancia.
Título: Re:como empaquetar todo (librerias,.c,etc)en un .out en C
Publicado por: grep en Septiembre 19, 2016, 12:28:46 PM
Un makeefile simple se compone de reglas. Las reglas tienen el siguiente formato:

target ... : prerequisites ...
        recipe


Las partes componentes de una regla, y su significado, son:
- target es el nombre de un archivo o de una acción.
- prerequisite es un archivo necesario para crear target.
- recipe es una acción (o un conjunto de acciones) a ejecutar. Un recipe comienza con una tabulación y no con espacios.


Para tu objetivo puedes hacer lo siguiente:

a.out : foo.c bar.c defs.h objeto.o /dir/to/archive/archive.a -lsome_dynamic_lib
cc -lsome_dynamic_lib foo.c bar.c objeto.o /dir/to/archive/archive.a


* Si esta es la primera regla en el makefile, entonces será la que se ejecutará por defecto al ejecutar make.

Esta regla especifica que:
* Si no existe a.out, entonces ejecutar el recipe
* Si existe a.out, pero los prerequisites (foo.c bar.c defs.h objeto.o /dir/to/archive/archive.a -lsome_dynamic_lib) han cambiado su fecha de modificación, entonces ejecutar el recipe.

Mi recipe es un comando común de cc. Como no especifico el parámetro -o, entonces cc crea el ejecutable a.out.

Hay muchas más funcionalidades que pueden facilitar la tarea de escribir reglas (GNU Make brinda muchas más).

Manual de GNU Make:
https://www.gnu.org/software/make/manual/make.html

Saludos