[C con Clase] parametro -l

Programante programante en gmail.com
Sab Abr 10 01:28:30 CEST 2010


El 09/04/10 18:21, halowin escribió:
> SD> El fichero de cabecera no contiene las definiciones de las funciones, 
> SD> sino las declaraciones: los ptototipos. Piensa que el fichero de 
> SD> cabecera es código C++ para el compilador, mientras que la biblioteca 
> SD> "libmia.a" contiene código máquina en binario para que el enlazador 
> SD> realice su tarea.
>
> Gracias por contestar pero creo que sigo sin entenderlo. Vamos a ver:
>
> Está claro que la libreria contiene el codigo binario.
>
> Si yo quiero usar un "printf" he de poner un 
> #include <stdio>
> si no no funciona, pero si quiero usar un seno o coseno he de linkar con -lm; entoces deduzco que en stdio.h aparte de la definición de printf hay algo mas y en segundo lugar, por que no puedo poner un
> #include <math.h>
> para usar el seno y coseno por la misma regla de tres y he de poner el -lm.
>
> ??¿¿
> Gracias de nuevo (quizás este hoy un poco espeso).
>   

Para usar sin y cos tienes que incluir la cabecera y enlazar con la
librería.
Esto es, 

#include <math.h> (o <cmath> bajo C++) y -lm

Para usar printf tienes que incluir la cabecera y enlazar con la librería.
Esto es, #include <stdio.h> y enlazar con libc. Peero, como stdio forma parte
de la librería de C, no necesitas enlazar de forma explícita (el compilador 
trae un archivo que configura las librerías con las que debe enlazar 
automáticamente).
Puedes probar a pasarle el flag -nostdlib para desactivar ese enlazado 
automático y verás como entonces se queja de que no puede encontrar printf







Más información sobre la lista de distribución Cconclase