2011-02-01 21 views
7

Me gustaría construir bibliotecas estáticas y compartidas en un proyecto.Crear bibliotecas estáticas y compartidas de C++

Sé que las bibliotecas compartidas deben crearse a partir de objetos compilados con -fpic para obtener código de posición independiente, mientras que la biblioteca estática no necesita esto. Todo está bien y puedo crear una biblioteca compartida o estática.

No me gustaría compilar mi fuente dos veces para obtener los diferentes archivos de objeto, entonces ¿cómo se hace esto normalmente? Leo how to get a shared library based on a static one. Sin embargo, el ejemplo muestra la biblioteca estática que se está creando con -fpic. ¿Es este el camino a seguir? ¿Hay cosas que tener en cuenta con esto?

¿Existe un enfoque común para compilar bibliotecas estáticas y compartidas? P.ej. primero estático y basado en la lib una versión compartida se crea?

Me interesa saber si hay diferentes enfoques para esto y qué considerar al seleccionar.

Estoy usando gcc4.4 en Linux.

¡Gracias de antemano!

Respuesta

6

El enfoque común que he visto es, de hecho, compilando su fuente dos veces, una vez con PIC y una vez sin ella. Si no lo hace, o terminará con una sobrecarga de PIC en la biblioteca estática, o un objeto compartido que no puede ser reubicado por el sistema operativo (lo que significa que NO se comparte entre múltiples clientes de la biblioteca).

+0

Para este enfoque, ¿cómo se organizarían los archivos de objeto si se desea tener simultáneamente bibliotecas tanto estáticas como compartidas? Algo como obj/static/... y obj/shared/...? – murrekatt

+0

@murrekatt: Claro. Es agradable usar un directorio separado para cada configuración de compilación para que pueda usar muchos simultáneamente sin recompilar completamente para actualizar cada uno. Hacer esos subdirectorios bajo un directorio para mantenerlos da exactamente lo que muestra, al menos si usa "obj" como su directorio principal de compilación y "estático" y "comparte" los nombres de esas dos compilaciones. –

Cuestiones relacionadas