2011-05-30 13 views
21

Parece archivo de almacenamiento puede ser generada a partir de archivos de objeto:¿Cuál es la diferencia entre el archivo objeto y la biblioteca estática (archivo)?

ar rvs libprofile.a profile.o 

Cuál es la diferencia entre el archivo de objeto y archivo de almacenamiento?

Me parece que ambos pueden ser utilizados con gcc directamente, por ejemplo .:

gcc *.c profile.o o gcc *.c libprofile.a

Cuál es la diferencia?

+1

posible duplicado de [¿Por qué crear un archivo .a desde .o para la vinculación estática?] (Http://stackoverflow.com/questions/1852941/why-create-aa-file-from-o-for-static- enlace) –

Respuesta

12

La biblioteca estática es una colección de uno o más archivos de objetos, con un índice para permitir una búsqueda rápida. Hay algunas diferencias menores en la forma en que el compilador las trata. Con un fichero objeto vincular de esta manera:

gcc f1.o f2.o -o myexe 

con las bibliotecas también se puede hacer eso:

gcc f1.o libf2.a -o myexe 

o puede utilizar la abreviatura:

gcc d1.o -lf2 -L. -o myexe 

Además, gcc será siempre vincular .o archivos, pero solo buscará en las bibliotecas y vinculará desde allí si todavía hay nombres indefinidos para resolver.

+0

Butterworth, pero 'gcc' puede usarlos alternativamente, o al menos donde se usa .o, .a también se puede usar, ¿no? –

+0

Sí, pero como señalo, el uso puede ser ligeramente diferente. –

Cuestiones relacionadas