2012-03-16 12 views

Respuesta

7

Una biblioteca estática es básicamente una colección de archivos de objeto. Normalmente es solo un archivo ar de archivos de objetos. Con ar, puede extraer archivos de objetos de la biblioteca, agregarle diferentes archivos de objeto, etc.

En general, la diferencia entre una biblioteca dinámica y un archivo de objeto compartido es el objetivo: Windows usa bibliotecas dinámicas, Linux usa objetos compartidos. Hay un poco más de diferencia que eso, pero no mucho.

1

Las bibliotecas dinámicas (compartidas) usan el código PIC; el código funcionará independientemente de la ubicación física real de la biblioteca que utilizan los ejecutables múltiples en la memoria.

Las bibliotecas estáticas se vinculan al ejecutable durante la vinculación por fases para crear el ejecutable.

La ventaja de las bibliotecas dinámicas es la huella más pequeña del ejecutable en la memoria. La ventaja de las bibliotecas estáticas es que puede entregar el ejecutable sin la necesidad de tener las bibliotecas dinámicas y ejecutarlo un poco más rápido y no se requiere ningún esfuerzo para permitir que la biblioteca exista en cualquier lugar de la memoria física.

+0

Pero mis preguntas son sobre "archivo biblioteca vs objeto" y no sobre "lib estático frente a dinámico". También mi inglés no es muy bueno :). Entonces, si todo se debe a la escritura de preguntas enrevesadas, dígame, por favor. – Jofsey

+0

Una biblioteca es solo una colección de archivos. Solo asegúrese de que la colección sea compartida o estática. Mi respuesta es decirle la diferencia entre tener los archivos para compartir o como estáticos. –

+1

Su respuesta es incorrecta en casi todos los detalles ;-(En ix86 Linux, uno puede crear bibliotecas compartidas a partir de código que no sea 'PIC'. Las bibliotecas estáticas pueden contener código' -PIC' y pueden vincularse a bibliotecas compartidas. La huella de un ejecutable usando un enlace dinámico es * más grande * que una que no lo hace. –

0

Las bibliotecas de fragmentos ahorran espacio en disco si las usa más de un ejecutable. Si hay varios ejecutables que usan la misma función de una biblioteca compartida. se están ejecutando, cada uno obtendrá su propia copia. Ningún archivo ejecutable en el disco incluirá el código de esa función, sino una referencia a la biblioteca compartida.

Cuestiones relacionadas