No necesito mucha aclaración en esta área. Siento que los términos Static library
& Dynamic Library
no son correctos.Biblioteca estática y Biblioteca dinámica: Confusión
- lib1.o + lib2.o + lib3.o -> "LinkerOutputFile" (ejecutable o biblioteca).
Si este "LinkerOutputFile" contiene el código de todos los archivos lib1.o, lib2.o, lib3.o, entonces se dice que "LinkerOutputFile" está enlazado satíricamente "LinkerOutputFile" (ejecutable o biblioteca). (O)
Si "LinkerOutputFile" solo contiene referencias & otra información sobre a lib1.o, lib2.o, lib3.o sin que contiene el código de estos archivos lib * .o. Entonces se dice que "LinkerOutputFile" Dinámicamente vinculado.
¿Cómo hace esto que los archivos de lib * .o sean una biblioteca estática o una biblioteca dinámica? Son solo archivos de biblioteca.
O es que, "LinkerOutputFile" es una biblioteca en lugar de ejecutable, dependiendo de si su biblioteca estática o dinámicamente enlazada se llama biblioteca estática o biblioteca dinámica. ¿Verdadero o falso?
sé que estoy equivocado, porque, sé que
En la mayoría de las plataformas de tipo UNIX las extensiones son
- .a para las bibliotecas estáticas (archivos) y
- .so para bibliotecas compartidas.
En Windows:
- .dll indica una biblioteca compartida
- .lib indica una biblioteca estática o de importación.
Pero no puedo averiguar dónde estoy equivocado. También por favor dígame cómo son Static library
& Dynamic Library
internamente diferente.
Además, se trata de la especificación ABI:
En este capítulo se describe el objeto de formato de archivo , llamado ELF (Ejecutable y Vinculación Formato). Hay tres tipos principales de archivos de objeto .
Un archivo reubicable sostiene código y los datos adecuado para la vinculación con otro objeto archivos para crear un archivo de un objeto compartido ejecutable o.
Un archivo ejecutable tiene un programa adecuado para la ejecución; el archivo especifica cómo exec (BA_OS) crea una imagen de proceso del programa .
Un fichero objeto compartido sostiene código y de datos adecuado para vincular en dos contextos . Primero, el editor de enlaces [ver ld (BA_OS)] procesa el archivo de objetos compartidos con otros archivos de objetos reubicables y compartidos para crear otro archivo de objetos . En segundo lugar, el enlazador dinámico lo combina con un archivo ejecutable y otros objetos compartidos para crear una imagen de proceso .
"archivo de objeto compartido" son otras palabras para decir Dynamic Library (tiene extensión * .so). Pero ¿qué pasa con "Biblioteca estática"? Esto ni siquiera lo menciona.
¿Hay alguna diferencia entre, "Relocalizable" & "Static Library" & "Import Library"? Por favor, aclararme con la estructura interna.
Tenga en cuenta que los archivos '.o' para enlaces estáticos y dinámicos difieren (vea la referencia gcc para la opción' -static'). La respuesta a su pregunta está aquí: http://stackoverflow.com/questions/1210787/relation-between-object-file-and-shared-object-file/1210857#1210857 –
posible duplicado de [Diferencia entre bibliotecas estáticas y compartidas ?] (http://stackoverflow.com/questions/2649334/difference-between-static-and-shared-libraries) –