Question

Comment puis-je forcer automake à créer une bibliothèque standard partagée, au lieu d'un libtoolized? Normalement, je crée la abc.so qui est référencé par un chemin complet et chargé dans le programme principal. Y at-il un moyen de forcer AM à faire la même chose? Si je liste comme _LIBRARY, automake se plaint: 'abc.so' is not a standard library name; did you mean 'libabc.a'

Juste pour clarifier: Oui, je ne ai besoin de soutien .so - pas statique. Et oui, je veux un nom de fichier personnalisé.

Était-ce utile?

La solution

Automake ne sait pas comment construire une bibliothèque partagée parce qu'il n'y a aucun moyen portable de le faire. Si vous voulez une bibliothèque partagée avec Automake, vous devez utiliser Automake + Libtool. Notez que vous pouvez facilement configurer libtool ne pas construire une bibliothèque statique (avec LT_INIT([disable-static]) dans votre configure.ac) par défaut.

Autres conseils

libtool est le chemin à parcourir. Si vous voulez un nom personnalisé, ajoutez l'option -module à _LDFLAGS, par exemple:

plugindir= /some/where  
plugin_LTLIBRARIES= abc.la
abc_la_LDFLAGS= -module

Une bibliothèque libtoolized est un wrapper autour d'une ou plusieurs bibliothèques standard. Vous pouvez trouver ces bibliothèques dans ".libs" après l'exécution de "faire", ou "$ prefix / lib" après l'exécution de "make install".

Sur une machine Linux, vous devriez trouver éventuellement un fichier appelé "libabc.so".

IIRC, il n'y a rien de spécial au sujet des bibliothèques créées avec l'aide de libtool, à moins que vous liez contre libltdl. Si vous ne souhaitez pas utiliser libtool, vous avez le pouvoir de choisir et ne se soucient pas trop sur la portabilité, vous êtes libre d'utiliser automake sans libtool. Je recommande d'utiliser la puissance de libtool.

En fait, je ne sais même pas ce que _LIBRARY est bon pour, il n'a pas trouvé dans la section

scroll top