2009-08-05 9 views
0

Possible en double:
Is a Linux executable “compatible” with OS X?envoyer a.out à quelqu'un

J'ai quelques C++ code compilé en utilisant GLUT et OpenGL sur os x. Tout fonctionne bien. Je l'ai comme un.out

Y at-il un moyen d'envoyer cela à quelqu'un en utilisant os x? Y aura-t-il des dépendances étranges? Puis-je l'envoyer à quelqu'un en utilisant Linux?

Je doute que je peux faire l'un ou l'autre c'est pourquoi je demande ici. Je regardais autour sur google mais n'a pas pu trouver quelque chose d'utile, je ne suis probablement pas la recherche de l'étoffe

grâce

Répondre

10

OS X et Linux ont des formats binaires complètement différents (Mach-O/Universal Binary et ELF respectivement), donc non, un programme compilé sur OS X ne fonctionnera pas sous Linux à moins que vous ne l'ayez compilé de manière croisée.

Si vous avez compilé votre code en utilisant la liaison statique, un autre utilisateur OS X pourra très bien l'utiliser. Cependant, sachant que je ne connais pas grand-chose à GLUT ou à OpenGL, je parierais que ce sont des bibliothèques dynamiques, et donc celui à qui vous l'enverrez aura besoin des mêmes bibliothèques installées au même endroit pour être capable d'utiliser votre code compilé.

otool -L affichera les dépendances de liaison de votre exécutable, FYI.

+0

Je pense que de nombreuses bibliothèques sont fournies à la fois statiques et dynamiques sous OS X, ce qui vous permet d'obtenir une version statique de celles-ci. –

-2

Qu'en est-il juste de partager la source?

Avez-vous peur que quelqu'un vole votre précieux travail?

+1

Et si l'autre personne n'était pas un développeur et ne connaîtrait pas un compilateur s'il le mordait? –

+0

Sérieusement. Ce n'est pas un problème. Quand les gens commencent à prendre votre code, vous faites quelque chose de bien. – Sneakyness

+0

Oh, je suis d'accord avec vous - ce n'était pas mon downvote. OTOH, ma question est toujours là. –

1

Il devrait fonctionner pour l'envoyer à quelqu'un utilisant la même version d'OS X et la même puce d'ordinateur que vous. Il peut même être possible sur OS X de procéder à une compilation croisée en un binaire universel qui fonctionne sur les puces Intel et PowerPC, mais vous serez toujours limité à OS X.

Pour obtenir un exécutable fonctionnant sous Linux, vous aurez besoin de le compiler sur Linux (ou d'utiliser un compilateur croisé, mais cela pourrait être plus difficile que cela en vaut la peine, surtout si vous devez le faire à plusieurs reprises). Ou, comme cela a déjà été dit, vous pouvez simplement distribuer le code source et laisser les gens le compiler eux-mêmes. Cela peut être la meilleure approche, car C++ n'a pas de format binaire commun, donc si différentes personnes utilisent des compilateurs différents qui ont différentes formes de gestion de noms, ils auront tous un programme qui fonctionne (s'ils compilent OpenGL ou GLUT avec un C++ compilateur et ensuite vous avez compilé votre programme avec un autre, ils pourraient ne pas fonctionner ensemble (je pense)).