2011-05-11 11 views
35

que descargaron: https://github.com/mongodb/mongo-c-driver¿Qué es un archivo con extensión .a?

y ahora estoy tratando de usarlo dentro de mi programa en C, pero no sé qué hacer con los archivos generados .a. ¿Qué son? No pude encontrar ninguna información, ni siquiera en el manual de GCC.

Y construí este modo:

scons --c99 

Además, puedo utilizar C99 bibliotecas con mi programa de C89?

+0

Posible duplicado de * [¿Cuál es la diferencia entre .so, .la y .a archivos de la biblioteca?] (Https://stackoverflow.com/questions/12237282/whats-the-difference-between-so-la-and-a-library-files) *. –

Respuesta

48

.a archivos son static bibliotecas generadas típicamente por el archive tool. Por lo general, incluye los archivos de encabezado asociados con esa biblioteca estática y luego los vincula a la biblioteca cuando está compilando.

+0

Pensé que los archivos .so son los archivos de la biblioteca. ¿Debo usar ambos entonces? – Blub

+4

@Blub: hay bibliotecas estáticas y compartidas. En Linux, .a es una biblioteca estática (archivo), mientras que .so es una biblioteca compartida (objeto compartido). – unwind

+0

Puede ver el contenido de una biblioteca estática '.a' usando' ar tv foo.a'. Por lo general, es una colección de archivos de objetos '.o'. –

18

.a archivos se crean con la utilidad ar. son bibliotecas. Para utilizarlo con gcc, recoger todos .a files en una carpeta lib/ y luego enlazar con -L lib/ y -l<name of specific library>

colección de todos los archivos .a en lib/es opcional. Hacerlo hace que los directorios se vean mejor con una buena separación de códigos y bibliotecas, IMHO