Comment créer un lien vers une version spécifique d'une bibliothèque partagée dans GCC

StackOverflow https://stackoverflow.com/questions/828053

  •  06-07-2019
  •  | 
  •  

Question

Je suis en train de compiler du code qui utilise libcurl sur un système Debian Linux. Ma machine de développement exécute Debian 5 mais je veux que le binaire soit utilisable sur les anciens systèmes Debian 4.

Je constate que si je spécifie -lcurl , il sera lié à libcurl.so.4 mais les systèmes Debian 4 ne disposent que de libcurl.so.3

Existe-t-il un moyen de dire à GCC de créer un lien vers libcurl.so.3 (qui existe à la fois dans Debian 4 et 5) ou simplement libcurl.so pour qu'il utilise la version disponible?

Était-ce utile?

La solution

Vous pouvez transmettre le fichier .so actuel au lieu de -l sur la ligne de commande de l'éditeur de liens et il doit faire ce que vous voulez.

Autres conseils

Au lieu d'utiliser " -lcurl " utilisez " -l: libcurl.so.3 " Et bien sûr, utilisez également "-L _installed_path_"

Pourquoi ne pas créer un lien symbolique local vers votre projet lié à .3? Vous pouvez simplement utiliser -L au moment de la compilation. Je ne sais pas si vous obtiendrez un conflit de nom, mais vous pouvez toujours l'appeler libcurl-old.so au cas où.

Je pense que la bonne façon de procéder consiste à utiliser les indicateurs - filter et - auxiliaire de l'éditeur de liens.

Ils ne sont pas très documentés, mais devraient vous permettre de charger des symboles de différentes versions de la même bibliothèque en fonction de la machine sur laquelle vous êtes installé.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top