2009-11-21 4 views

Répondre

6

Premier point: toutes les réponses concernant la version du compilateur semblent erronées. Ce qui est important, ce sont les liens (et l'architecture, bien sûr).

Si vous copiez le fichier .donc vers le système de démarrage (dans son propre répertoire /usr/local/* ou /opt/*, par exemple) puis essayez d'exécuter l'exécutable prévu à l'aide un paramètres d'environnement LD_PRELOAD. Si l'éditeur de liens (ld-linux.so) parvient à résoudre tous les symboles entre les deux alors le programme devrait charger et exécuter. Il devrait donc être possible, et raisonnablement sûr (tant que vous n'écrasez pas l'une des bibliothèques système existantes et n'utilisez que LD_ * /etc/ld.so.preload (dans un chroot?) Magic pour lier les exécutables cibles à cette

Cependant, je pense que c'est une mauvaise idée.Vous avez un problème de gestion de paquets.Ubuntu et Red Hat ont tous deux des outils de gestion de paquetages utiles (Notez que l'endroit approprié pour poser des questions sur la gestion des paquets serait ServerFault ou SuperUser, certainement pas SO)

+0

Merci, je vais lire sur LD_PRELOAD etc. et voir si je fais des progrès. Considérer la construction d'un packagepour qu'il l'installe aussi –

0

Je me joins à Xinus. Compilateur IMHO, dans le cas d'Ubuntu et RHEL, ce sera gcc, est étroitement couplé avec glibc. Donc, si sur les deux machines, c'est la même chose que la plupart du temps, ça marche.

Mais pourquoi deviner, faire un petit essai routier (principal avec deux lignes) et si elle est en cours d'exécution que il y a une bonne chance qu'un programme plus grand peut fonctionner sur un environnement « hostile » :)

0

La meilleure solution est de donner votre code à votre co développeur, et compilons-le !!!!

Vous avez plusieurs solutions

  • Mise à niveau de son gcc à la même version que votre
  • Installer sa version gcc sur votre ordinateur et le compiler

Vous devez vérifier si vous travaillez à la fois sur la même architecture 32 bits ou 64 bits. Mon avis est que vous pouvez avoir des problèmes, car vous n'utilisez probablement pas la même glibc .

2

Peu probable: vous n'auriez pas posé cette question si cela a juste fonctionné, voulez-vous?

Selon DistroWatch, Ubuntu 9.10 utilise glibc-2.10.1, tandis que RHEL-5.4 utilise glibc-2.5. Cela signifie que si votre bibliothèque référence des symboles avec les versions GLIBC_2.6 et supérieures, cela ne fonctionnera pas avec RHEL-5.

Vous pouvez dire si vous utilisez de tels symboles (et lesquels) avec:

readelf -s /path/to/your/library.so | egrep 'GLIBC_2.([6-9]|10)' 

Si la sortie est non vide, la bibliothèque ne fonctionnera pas sur RHEL-5.

Vous pouvez créer une bibliothèque compatible avec RHEL-5 en utilisant autopackage.

+0

A beaucoup aimé la sortie de readelf (similaire à dumpbin sur la plate-forme Windows). Incidemment, l'exécution de la commande ci-dessus ne correspond à aucune des "chaînes offensantes", donc en théorie, cela devrait fonctionner. Je considérerai toutefois utiliser un gestionnaire de paquets, comme vous et un autre utilisateur l'avez suggéré. –

Questions connexes