2010-05-04 6 views
8

Je tente de construire un paquet binaire qui peut être exécuté sur plusieurs distributions Linux. Il est actuellement construit sur Ubuntu 10.04, mais il échoue sur Ubuntu 8.04 avec l'erreur suivante:Quelle est la meilleure façon de construire un logiciel qui ne nécessite pas la dernière glibc?

./test: /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.11' not found (required by ./test) 
./test: /usr/lib/libstdc.so.6: version `GLIBC_2.11' not found (required by ./test) 

Quelle est la meilleure façon de résoudre ce problème? Y a-t-il un moyen d'installer une vieille glibc sur une nouvelle boîte et de la compiler, ou dois-je construire sur une ancienne distribution? Et si je construis contre une vieille glibc, ça va marcher sur une nouvelle glibc? Ou, alternativement, y a-t-il juste quelques drapeaux de compilateur ou paquets pratiques que je pourrais installer pour résoudre le problème?

Répondre

5

La meilleure solution que j'ai trouvée est d'installer une machine virtuelle exécutant Debian stable, et de la construire. La stabilité de Debian est assez ancienne pour que tous les paquets construits avec elle puissent être exécutés sur n'importe quelle autre distribution basée sur Debian comme Ubuntu. Vous devrez peut-être contourner les bogues non critiques qui ont été corrigés dans les versions ultérieures de divers logiciels, mais qui ne sont pas rétroportés dans Debian stable.

+0

Je suppose que cela signifie que la construction d'une ancienne version de la glibc fonctionnera bien sur les nouvelles versions de la glibc? – ZorbaTHut

+0

Pour autant que je sache, oui ... permettez-moi de le dire de cette façon, il n'a pas encore mal tourné. ;-) – ptomato

1

Si vous voulez vraiment vous assurer qu'il s'exécute sur chaque distribution récente, vous pouvez également envisager une liaison statique avec une libC que vous sélectionnez. Cependant, vous pouvez toujours rencontrer des problèmes si vous utilisez des fonctionnalités fournies uniquement par des noyaux récents (par exemple, les nouveaux appels système).

Questions connexes