Por defecto, cuando invocamos el enlazador desde gcc, el enlazado se hace de manera dinámica, aunque podemos forzarlo con la opción -static para que se haga estática. De ésta forma, se incluirán en el ejecutable los códigos objeto de las funciones llamadas en él.
Pero, ¿y si lo que queremos es enlazar algunas bibliotecas de forma dinámica y otras de forma estática?
Pues la solución es simple, aunque creo que no óptima:
-Wl,--whole-archive -lbiblio_estatica ...
-Wl,--no--whole-archive -lbiblio_dinamica ...
Con lo que mediante -Wl le decimos a gcc que le pase lo siguiente al enlazador ld.Y digo que creo que no es óptima porque según el manual del enlazador ld, éstas opciones hacen que se incluya en el ejecutable los archivos completos que se indican a continuación, por lo que se introducirá código que el programa no use (o eso es lo que yo entiendo).
Después le pasamos la opción que anula la configuración de incluir todos los archivos
No hay comentarios:
Publicar un comentario