Bonjour à tous,
Je voulais savoir si il est possible de créer une bibliothéque statique (.a) à partir d'une bibliothéque dynamique (.so) ?
Merci d'avance.
Version imprimable
Bonjour à tous,
Je voulais savoir si il est possible de créer une bibliothéque statique (.a) à partir d'une bibliothéque dynamique (.so) ?
Merci d'avance.
Pour faire simple, non.
Généralement, les objets d'une bibliothèque statique ou d'une bibliothèque dynamique ne sont pas compilés avec les mêmes options (-fPIC pour une bibliothèque dynamique avec gcc par exemple).
Il est plus simple de recompiler la bibliothèque, une fois en statique, une fois en dynamique. C'est ainsi que procède libtool.
Merci ! Je pensais qu'il était possible de récupérer les .o d'une bibliothèque dynamiques afin de les intégrer dans un bibliothèque statiques. Mais à priori non !
Bonjour
j'essaie moi aussi de passé des bibliothèque dynamique en statique pour pouvoir transporter un programme que j'ai réalisé.
Je vois qu'il faut que je recompile donc mes bibliothèque mais je n'est aucune idée de la façon dont je doit m'y prendre.
Est-ce que vous pouvez m'aider??????
Pour faire moins simple: Ca existe sous windows (rechercher dll2lib sur Google), donc certainement sous Linux (c'est ça, t'es sous Linux ?). Par contre payant, semble-t-il. D'un autre coté, il existe plein d'utilitaires du type implib qui crée juste le .lib (ou .a) d'accès à la librairie dynamique. Mais dans ce cas, il faudra la fournir avec le programme.
Hum... je ne pense pas.
Sous Linux, une librairie statique est une simple collection de .o. Elle n'est donc pas "linkée" contrairement à une librairie dynamique.
Par conséquent, pour obtenir une librairie statique à partir d'une librairie dynamique, il faudrait "unlinker" la librairie, sans parler des éventuels symboles cachés.
Je ne vois donc aucun intérêt à se palucher un outil permettant d'inverser ce processus. Autant recompiler (et il est rare sous Linux de ne pas disposer des sources).
La pratique veut donc qu'on génère des librairies statiques afin de les rassembler dans des librairies dynamiques ou des exécutables (et non le contraire).
Par contre, une telle pratique ne m'étonne pas de Windows.