[C con Clase] Libreria estática con errores de enlazado.

Steven Davidson steven en conclase.net
Mar Jun 26 04:38:46 CEST 2007


Hola Mauro,

El pasado 2007-06-26 00:10:15, mcam escribió:

m> Hola. Yo escribí una libreria estática en C usando solo las librerias 
m> estándar y uso como compilador el GCC de Mingw para Windows.
m> La libreria ya la compile de la siguiente forma:
m>   gcc.exe -c -o o\bm_error.o bm_error.c
m>   gcc.exe -c -o o\bm_basics.o bm_basics.c
m>   gcc.exe -c -o o\bm_valid.o bm_valid.c
m>   gcc.exe -c -o o\bm_memio.o bm_memio.c
m>   ar.exe rcs a\bmlib.a o\bm_error.o o\bm_basics.o o\bm_valid.o o\bm_memio.o
m>   ranlib.exe a\bmlib.a
m> Este proceso sale perfecto, el problema se origina cuando creo un programa 
m> que la utilize. El linker no puede enlazar las funciones de la libreria con 
m> el programa, que se definen en bmlib.h y que el único fichero fuente del 
m> programa incluye.
m> Para compilar el programa hize:
m>   gcc.exe test1.c -o test1.exe -I %C_INCLUDE% -L %C_LIB% -L a
m> Y como salida del gcc obtengo que no se pudieron enlazar ninguna de las 
m> funciones.
m> Por favor, si sabes o intuis cuál es el error, hacemelo saber, porque la 
m> libreria ya esta terminada y quería empezar con la etapa de debugging, cosa 
m> imposible de realizar si no puedo crear programas de prueba para encontrar 
m> los errores.

Tal y como has compilado tu programa, te falta indicar cuál es el nombre del fichero de la biblioteca a usar. La opción -L es para indicar el directorio o ruta de las bibliotecas, pero esto no implica que el enlazador "mágicamente" elige la tuya. Tienes que indicar la biblioteca a usar con la opción -l. Por ejemplo,

gcc.exe test1.c -o test1.exe -I %C_INCLUDE% -L %C_LIB% -L a -lbmlib.a


Espero que esto solucione el ppoblema.

Steven


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