[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