C++ cross-compilateur à partir de Windows à Linux
Sont là tout utilisateur d'outils là-bas pour cross-compiler à partir de Windows à Linux?
- Drôle: tout ce qui se passe à travers le VS IDE est ce qui confond le diable hors de moi - il y a donc beaucoup de la configuration requise pour le faire fonctionner. C'est tellement plus simple sous Linux où vous ne l'avez pas!
- Généralement "un cross-compilateur de X à Y" voudrait dire "un compilateur qui s'exécute sur X, mais produit des fichiers binaires qui s'exécutent sur Y". Si vous demandez un compilateur qui fonctionne sur Windows et produit des binaires Linux. Est-ce que vous voulez? La manière habituelle de le faire est de compiler pour linux sur linux. La raison habituelle pour la cross-compilation, c'est que Y n'est pas viable de l'environnement de développement (par exemple, parce que c'est un téléphone mobile, set-top box, Roomba, etc), peut-être que vous seriez mieux de trouver un Linux IDE, vous pouvez vivre avec?
- vous l'avez Steve merci pour le X Y explication vous a fait un meilleur travail que moi , mais je dois relire NON , ce n'est pas une solution pour moi , je relais besoin d'un compilateur qui fonctionne sur windows et génère binaire linux.
- Je ne pense pas que vous pouvez le faire, même en utilisant Cygwin (qui est tout simplement Linux sous Windows!) ne va pas résoudre le problème de la génération d'un linux de la bibliothèque et de liaison contre sous Windows.
- H. Josef venir-un, vous pouvez compiler le code pour un régulateur uControler avec un compilateur fonctionnant sous windows et vous ne pouvez pas compiler du code pour linux à l'aide d'un compilateur qui fonctionne sous windows ??? Je ne le crois pas .
- Je ressens le besoin de mentionner que Visual Studio est l'IDE; le compilateur lui-même est séparé et peut être exécuté depuis la ligne de commande ou un programme.
- Autant que je sache, vous pouvez compiler le code C++ standard à l'aide de n'importe quel compilateur, mais la création d'une bibliothèque (et de tester) sur un tout autre système d'exploitation est lourd et même impossible, une Fois que j'ai essayé de créer et de tester une dynamique linux (bibliothèque.donc,) utilisant MingW et il ne fonctionne pas, il ne fonctionne pas, même avec Cygwin depuis l'environnement Windows est très différent de Linux.
- il devrait être possible sous Cygwin par réglage du ccg cible appropriée à la configuration linux. gcc devrait être en mesure de produire du code pour à peu près n'importe quelle plateforme, en cours d'exécution sur toute plate-forme, à condition que vous avez le natif nécessaires générateur de code exécutables et de format de fichier bidule installé. Comment c'est réellement atteint, même si, en termes de ce que vous avez à installer et quelles sont les options que vous avez besoin - aucune idée. Et tout cela suppose que le code est portable, si il appelle les fonctions de Windows puis bien sûr, il n'a pas juste besoin d'être compilé pour linux, il doit être porté sur linux.
- Exécuter le binaire Linux serait très lourd, mais si vous avez tous les libs/OBJ dans Linux format, mais la compilation est rien de magique... si un compilateur Linux app fonctionne sur Windows, pourquoi ne devrait-elle pas de travail? Pourquoi ne pourriez-vous pas encore d'établir un compilateur Linux sous Windows?
- la programmation un peu, "compiler" avec ffive, je suppose. de toute façon c'est possible, mais vous devez d'abord compiler un crosscompiler. le plus complet explanaition j'ai trouvé gentoo-wiki.info/HOWTO_Distcc_server_on_Windows . je sais que c'est à propos de distcc, mais il couvre l'installation d'un xcompiler...
Vous devez vous connecter pour publier un commentaire.
crosstool-ng prend en charge la création de la croix-compilateurs avec cygwin hôte.
Vue d'ensemble:
crosstool-ng
tar xvjf crosstool-ng*
)./configure
flex
,libtool
,ncurses-devel
) Vous aurez besoin d'au moins les éléments suivants:make
make install
/usr/src/cross-linux-gnu-root
mount c:/cygwin/usr/src/cross-linux-gnu-root /usr/src/cross-linux-gnu -o binary,posix=1
)ct-ng menuconfig
x86
(probablement) et de la sous-architecture dei686
(évite GCC 4.8 questions, grâce osm0sis), de la cible noyau delinux
, et la cible de la bibliothèque C pourglibc
, et de permettre au compilateur C++.Paths and misc options
ensuite, allez dansCompanion tools
(à haut niveau) et de permettreBuild some companion tools
et puismake 3.81
(Merci osm0sis)ct-ng build
Bien sûr, cela ne va PAS vous permettre de construire des applications pour linux à partir de l'intérieur de Visual Studio. (VS2010 et, plus tard, vous permettent de construire avec d'autres toolchains comme gcc, mais vous auriez besoin d'un approprié de la chaîne de description en plus de la croix-compilateur construit par crosstool-ng). Mais vous aurez un travail
g++-linux-gnu
, ce qui vous permet d'exécuter directement ou à l'aide d'un Makefile.NOTE: construire le cross-compilateur prend beaucoup de temps. osm0sis a fourni un préconstruit gcc 4.8.1 ici, avec ses notes sur la construction du cross-compilateur (utilisé pour mettre à jour cette réponse).
ct-ng build
étape maintenant, essaie de faire en sorte que ma réponse soit aussi complète que possible et comprend des solutions à tout type de pièges le long du chemin. Et oui, le compilateur, je suis en train de construire va générer des exécutables ELF qui sont liés de façon dynamique à l'encontre de la glibc (et d'autres bibliothèques comme approprié).mount: warning: couldn't determine mount type.
Encore en suspens.Demandez-vous pour quelque chose qui peut prendre le code écrit pour fonctionner sur Windows et le faire fonctionner sur linux? Il n'y a pas vraiment un compilateur qui fait que - mais peut-être que vous êtes à la recherche pour le Vin ( http://www.winehq.org/ ) qui vous permet d'exécuter des applications Windows sous linux (si ils utilisent les Api de Vin a thunked out).
Edit: je suis en supposant que votre code est en utilisant les Api de Windows (Win32, etc.) dans cette réponse. Si vous êtes seulement en utilisant la Norme C++ et de bibliothèques de la croix-plate-forme, puis il ya beaucoup de d'autres réponses.
winelib
est une bonne suggestion dans le cas où le code est plein de Win32-ismes. Mais en disant il n'y a pas de compilateur pour construire les binaires Linux est balivernes.Votre meilleur pari est d'utiliser une plate-forme de l'IDE comme Code::Blocks qui permet d'importer des MSVC projets, et de générer un Makefile pour Linux, que vous pouvez ensuite exécuter sur un Linux (même avec le même programme si vous le souhaitez).
Si votre flux de travail serait alors à ressembler à quelque chose comme ce qui suit:
C'est un peu obtus, sans doute, mais au moins de Code::Blocks prend soin de beaucoup de ces petits détails avec des choses comme les Makefiles, et ce n'est pas.
Je ne crois pas qu'il existe des compilateurs qui vous permettent de compiler sous Windows, puis prendre le binaire résultant et l'exécuter sur une machine Linux. Votre meilleur pari est de mettre en place deux environnements de développement, sur un Windows et un Linux. Faire la plupart de votre développement et de débogage dans l'environnement Windows, si c'est ce qui vous convient, puis souvent compiler et tester sous Linux pour être sûr que votre code est vraiment de la croix-plate-forme. Vous aurez également besoin d'utiliser une croix-plate-forme de système de construction et d'essais. Je recommande d'utiliser cmake et Google Test, respectivement.
Compiler pour Linux à partir de Windows sans utiliser la virtualisation ou le compilateur croisé, mais seulement en mode natif via les commandes colinux
Créer natif de Linux les fichiers exécutables sans autorisation (redémarrage) de windows.
C/C++ Compiler pour Linux sous Windows par le biais de la Coopérative Linux
La manière la plus rapide de commutation entre Windows et Linux par ALT-TAB (pas de redémarrage ou de redémarrage nécessaire).
1.Installer les commandes colinux (http://sourceforge.net/projects/colinux/files/latest/download?source=files)
2.Utiliser les commandes colinux racine du système de fichiers image: Ubuntu 9.04-1 go.7z (http://sourceforge.net/projects/colinux/files/Images%202.6.x%20Ubuntu/Ubuntu%209.04/)
3.démarrer les commandes colinux
4.changer de chaîne "archive.ubuntu.com" pour "old-releases.ubuntu.com" avec:
shell> sudo vi /etc/apt/sources.liste
5.Mise à jour de votre configuration:
shell> sudo apt-get update
6.Installer deux logiciels pour pouvoir compiler vos programmes:
shell> sudo apt-get install build-essential
(c/c++, de compilateurs gcc)
shell> sudo apt-get install libmysqlclient15-dev
(dev mysql 5.1)
7.Accéder à des répertoires Windows depuis les commandes colinux
shell> mont cofs0 /mnt/-t cse
shell> lecteur de cd /mnt
8.Compiler
shell> c++ your.source.cc -o executable.nom