Émulation des binaires Linux sous Mac OS X
Comment faire fonctionner les binaires Linux sous Mac OS X?
en cherchant sur Google, j'ai trouvé quelques émulateurs mais aucun pour faire tourner des binaires Linux sur un Mac. Il y a pas mal de billets sur le fonctionnement de Mac OS X sous Linux et ce genre de choses - mais c'est le contraire de ce que je veux faire.
mise à Jour:
Merci pour toutes ces réponses! Je suis parfaitement au courant de MacPorts et Fink ou d'autres choses; et Non, Je ne veux pas de ces utilitaires, et je ne veux pas de des gestionnaires de paquets, je préfère compiler moi-même. J'ai aussi des parallèles et je pourrais installer des machines virtuelles et tout ce jazz...
la seule chose que je veux faire est de trouver un moyen d'exécuter un binaire pour lequel je n'ai pas le code source et qui a été compilé Pour Linux, mais je ne veux pas l'exécuter sous Linux mais sous Mac OS X. Par conséquent, ma question sur les émulateurs.
5 réponses
configurer une machine virtuelle (j'utilise personnellement VMware Fusion) et ensuite installer N'importe quelle distro de Linux que vous désirez sur la machine virtuelle.
ou, si vous avez la source du programme Linux, il y a des chances que vous puissiez le recompiler sur un Mac et l'exécuter nativement. Si vous installez Fink ou MacPorts, vous pouvez installer beaucoup de programmes open source sans trop de problèmes.
Eh bien, il y a un projet qui introduit quelque chose comme binfmt_misc de Linux sur OS X, donc maintenant ce dont vous avez besoin est un chargeur ELF, un linker dynamique qui peut charger à la fois Mach-O et ELF, et un mécanisme pour traduire les appels Linux vers OS X.
juste pour l'inspiration, vous pouvez implémenter le linker dynamique de la manière qu'il ignore l'extension du nom de fichier - à la fois libfoo.alors?1 (comme elfe Linux) et libfoo.1.dylib (comme un Mach-O) peut être chargé de sorte que les versions OS X des bibliothèques système peuvent être réutilisé pour que vous n'ayez pas besoin d'écrire une libc "hébergée sur OS X".ainsi et les appels syscalls peuvent être traités par un kext qui traduit les appels Linux en appels OS X dans le noyau.
ou, d'une manière plus élégante, implémenter un noyau Linux dépouillé comme un kext qui fait du noyau OS X un double usage. Cependant, vous devrez utiliser deux ensembles de bibliothèques. (Binaires ne s'opposent pas de sorte qu'il est en grande partie OK)
vous pourriez avoir un peu de chance avec l'exécution des exécutables Linux sous Mac OS X en utilisant Qemu's Émulateur D'Espace Utilisateur
si vous décidez de suivre la route de la virtualisation, considérez aussi VirtualBox.
aussi, si vous n'avez besoin que D'outils de ligne de commande UNIX, il y a le MacPorts projet. C'est fondamentalement la façon dont j'ai configuré git
sur mon mac: après avoir installé MacPorts, vous n'avez plus qu'à lancer le sudo port install git
commande pour installer git
sur votre système.
j'ai récemment trouvé Noé, que vous pouvez utiliser pour exécuter des binaires Linux sur macOS. Vous pouvez installer Noah via homebrew (brew install linux-noah/noah/noah
). Alors vous devriez être capable de faire cela:
noah linux_binary
d'après mon expérience, le comportement du binaire correspond à ce que je vois sur ma machine Ubuntu.