Je compile 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 trouve 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 se connecter soit à libcurl.so.3 (qui existe à la fois dans Debian 4 et 5) ou simplement à libcurl.so afin d’utiliser la version disponible?
Vous pouvez passer le fichier .so réel au lieu de -l sur la ligne de commande de l’éditeur de liens et il doit faire ce que vous voulez.
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 noms, mais vous pouvez toujours l'appeler libcurl-old.so au cas où.
Je pense que la bonne façon de faire est d'utiliser les drapeaux --filter
et --auxiliary
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é.