Pregunta

Mis enlaces de aplicación contra libsamplerate.a. Estoy haciendo esto para facilitar la distribución del binario final.

Me preocupa que tal vez el código dentro del archivo .a dependa de otras bibliotecas que también necesitaré distribuir.

Pero si no es así, me preocupa que estoy inflando demasiado mi solicitud al incluir varias copias de, por ejemplo, libc.

¿Qué será exactamente dentro de libsamplerate.a? ¿Solo el bytecode de libsamperate? ¿O más?

¿Fue útil?

Solución

Una biblioteca estática es solo una colección de archivos de objetos. Cuando compila un programa contra una biblioteca estática, el código objeto para las funciones utilizadas por su programa se copia de la biblioteca a su archivo ejecutable. La vinculación con una biblioteca estática no hará que se incluyan funciones fuera de esa biblioteca en su código.

Otros consejos

Un archivo .a es básicamente un paquete de archivos .o. Puedes demostrar esto usando la herramienta ar .

Por ejemplo, para mostrar el contenido de su biblioteca:

ar -t libsamplerate.a

Para crear un archivo .a desde cero:

ar -r tim.a *.txt

Solo el código objeto para libsamplerate. La vinculación estática contra una sola biblioteca no hace que todas las bibliotecas estén vinculadas estáticamente; eso sería malo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top