[C con Clase] parametro -l

Programante programante en gmail.com
Vie Abr 9 17:05:24 CEST 2010


El 09/04/10 13:18, halowin escribió:
> Hola a todos.
> Me creado una pequeña libreria para hacer pruebas y funciona perfectamente, pero resulta que a la hora de compilar tengo que poner:
>
> gcc pruebas.c -o pruebas -lmia
>
> habiendo creado la libreria con el nombre "libmia", tambien creé un .h de cabecera pero que no lo puedo poner como include porque no "ve" las funciones que hay dentro definidas.
>
> Me pregunto:
> ¿Cual es la diferencia entre poner mi libreria en un include o tener que linkarla explicitamente con -l?
>
> Posiblemente ya esté espluicado pero no lo he encontrado con el buscador, si ya existiera respuesta pido disculpas.
>
> Gracias.
>   
La opción -l no cambia los includes.

Si tienes varios ficheros:
pruebas.c utilidades_ficheros.c utilidades_ventanas.c

Compilarías usando:
gcc pruebas.c utilidades_ficheros.c utilidades_ventanas.c -o pruebas

O bien (es más rápido):
gcc -c pruebas.c -o pruebas.o
gcc -c utilidades_ficheros.c -o utilidades_ficheros.o
gcc -c utilidades_ventanas.c -o utilidades_ventanas.o
gcc pruebas.o utilidades_ficheros.o utilidades_ventanas.o -o pruebas

Como vas a usar los contenidos de utilidades_ficheros.c y
utilidades_ventanas.c en muchos proyectos, puedes crear una librería con
ambos ficheros compilados.
Entonces usarías simplemente:
gcc pruebas.c -o pruebas -lutilidades

O bien:
gcc -c pruebas.c -o pruebas.o
gcc pruebas.o -o pruebas -lutilidades

utilidades_ficheros.o y utilidades_ventanas.o estarían dentro de
libutilidades.a, por lo que no necesitas añadirlos como dependencia del
código.

Pero con cualquiera de las dos maneras, tienes que incluir las cabeceras
de las funciones que vayas a usar.
Me da la impresión de que estás haciendo un #include
"utilidades_ficheros.c" lo que es incorrecto.





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