He estado usando libarchive en mi proyecto desde hace un tiempo y está funcionando muy bien, en este momento estoy vinculándolo dinámicamente, por lo que en Windows el archivo libarchive.dll tiene que presentar en el sistema. Ahora me gustaría vincular estáticamente a la biblioteca, así que no tengo que molestarme en distribuir el archivo DLL, ¡pero estoy teniendo problemas para tratar de lograrlo!Vinculando estáticamente a libarchive en Windows con MinGW
Actualmente, en mi archivo de maquillaje, tengo algo como esto: -Lpath/a // libarchive/-larchive
Y esto funciona, pero lo hace un vínculo dinámico. No sé cómo hacer cumplir un enlace estático.
Puedo ver en el directorio libarchive hay dos archivos a, libarchive.dll.a y libarchive_static.a. Supongo que quiero hacer un enlace a libarchive_static.a, pero parece que no puedo especificarlo, haciendo que -larchive_static en el archivo make produzca errores en el enlazador.
Tenía la impresión de que las bibliotecas estáticas en windows son archivos lib, pero no obtengo ese tipo de archivo cuando construyo libarchive.
¿Cómo puedo hacer un archivo .lib de libarchive. Además, como pregunta adicional, ¿cuál es la diferencia entre un archivo a y un archivo lib?
actualización
Para enlazar a estáticamente libarchive, el comando de la biblioteca para el maquillaje debe contener:
-Lpath/a // libarchive/-larchive_static
Esto vinculará a la libarchive_static. un archivo. Sin embargo, también necesita definir LIBARCHIVE_STATIC en su código.
Ahora el problema es que libarchive depende de las bibliotecas bzip2 (así como otros), y si usted no tiene una acumulación estática de ellos se producirán errores de vinculador algo como:
referencia indefinida a `BZ2_bzCompressInit '
Usted necesita una acumulación estática de las bibliotecas dependientes y un comando similar al enlazador después el comando libarchive:
-Lpath/a/bzip2/-lbzip2
Usted puede construir bzip2 de la fuente, o hacerlo de la manera fácil y obtener un binario pre-construidos a partir del proyecto Gnu32Win aquí: http://gnuwin32.sourceforge.net/packages.html
Gracias por la nota para definir LIBARCHIVE_STATIC. –