c++ file linker .a

c++ - Cómo abrir un archivo.a



file linker (4)

Tengo un pequeño problema: tengo que abrir un archivo de enlace que tiene la extensión .a . Yo uso Dev-C ++.


¿Realmente quiere decir que desea abrir el archivo o, más bien, desea vincularlo con su código?

Dev-C ++ se instala de forma predeterminada con el compilador MinGW / GCC. Si el archivo no está diseñado específicamente para funcionar con MinGW (por ejemplo, puede ser un archivo de Cygwin o Linux), no podrá vincularlo al código generado por MinGW.

Si el archivo es una biblioteca compatible con MinGW / GCC, simplemente lo vincula a su código. En Dev-C ++, debe agregar el archivo a las opciones de vinculador del proyecto, ya sea agregando la ruta completa al archivo (hay un botón para eso en las opciones del proyecto) o colocando el archivo en una ruta definida por una -L<path> opción, y luego agregar una opción -l<archive> . Tenga en cuenta que id el archivo se llama libXXX.a, entonces la opción -l<archive> será `-lXXX ''; el prefijo "lib" y la extensión ".a" están implícitos.

Si simplemente desea inspeccionar un archivo para determinar qué símbolos externos proporciona, entonces puede usar la utilidad nm para eso. Si desea extraer los archivos de objetos individuales, use el ar , aunque no puedo pensar en una buena razón por la que tampoco quiera hacerlo.


Los archivos con la extensión .a son bibliotecas estáticas que utilizan las convenciones de nombres de archivos de Unix. No son mucho más que una colección indexada de código de objeto. No los abres tanto (a menos que tengas disponible una herramienta como nm o gdb , ambos pueden hacer cosas sensatas con una biblioteca, si no es necesariamente lo que podrías desear), como decirle al vinculador que los use al vincularlos. Con la mayoría de los enlazadores, es importante colocar todas las bibliotecas (tanto estáticas como dinámicas / compartidas) después de su código de programa principal en la línea de comandos del vinculador y el orden de las bibliotecas también importa.


Pruebe fstream , o fstream file_op("c://test.a",ios::in); , y no olvides incluir fstream.h .


.a archivos .a son archivos ar (algo así como archivos zip) de archivos de objeto ( .o ). Puede listar archivos en .a archivo .a usando el programa ar :

ar t file.a

Y extraer todos los archivos:

ar x file.a