C ++ cross-comstackr de Windows à Linux

Existe-t-il des outils conviviaux pour la compilation croisée de Windows vers Linux?

crosstool-ng prend en charge la création de compilateurs croisés avec l’hôte cygwin .

Aperçu:

  • Installer cygwin, avec des packages de développement
  • Télécharger crosstool-ng
  • Extraire l’archive ( tar xvjf crosstool-ng* )
  • Exécuter ./configure
  • Lorsque configure se plaint d’un outil manquant, revenez à la configuration de cygwin et installez le package correspondant (par exemple flex , libtool , ncurses-devel ). Vous aurez besoin au moins des éléments suivants:
    • Devel / gperf
    • Devel / Bison
    • Devel / byacc
    • Devel / wget
    • Devel / patch
    • Devel / make (version GNU)
    • Devel / automake 1.10+
    • Libs / libncursesw10
    • Libs / libncursesw10-devel
  • make
  • make install
  • Créez un nouveau répertoire pour construire le compilateur croisé, par exemple /usr/src/cross-linux-gnu-root
  • Activez la prise en charge de la sensibilité à la casse à l’échelle du système dans le registre (voir https://superuser.com/questions/266110/how-do-you-make-windows-7-fully-case-sensitive-with-respect-to-the- système de fichiers # answer-842670 )
  • Montez le répertoire sensible à la casse (par exemple mount c:/cygwin/usr/src/cross-linux-gnu-root /usr/src/cross-linux-gnu -o binary,posix=1 )
  • À partir du répertoire de compilation du compilateur croisé, ct-ng menuconfig
  • Dans les menus, définissez l’architecture cible sur x86 (probablement) et sous- i686 sur i686 (évite les problèmes GCC 4.8 , merci osm0sis), cible le kernel vers linux et cible la bibliothèque C sur glibc , et active le compilateur C ++.
  • Pour contourner les problèmes de la version 4.0 , activez également EXPERIMENTAL dans les Paths and misc options , accédez aux Companion tools (au niveau supérieur) et activez la génération d’outils associés, puis définissez make 3.81 (Merci, osm0sis).
  • Wget a des problèmes avec les derniers certificates kernel.org, alors utilisez la méthode .wgetrc dans cette réponse acceptée: Comment corriger les erreurs de certificate lors de l’exécution de wget sur une URL HTTPS dans Cygwin? (Merci osm0sis)
  • Actuellement, 3 patchs de fichiers sont nécessaires pour éviter d’autres erreurs:
    • l’erreur _libintl_gettext mentionnée dans les commentaires
    • les en-têtes byteshift , et
    • les en-têtes ELF (Merci Duncan Calvert et osm0sis)
  • ct-ng build

Bien sûr, cela ne va PAS vous permettre de créer des applications Linux depuis Visual Studio. (VS2010 et versions ultérieures vous permettent de créer d’autres outils tels que gcc, mais vous aurez besoin d’une description de chaîne d’outils appropriée, en plus du compilateur croisé créé par crosstool-ng). Mais vous aurez un g++-linux-gnu , que vous pouvez exécuter directement ou en utilisant un Makefile.

REMARQUE: la construction du compilateur croisé prend beaucoup de temps. osm0sis a fourni un gcc 4.8.1 pré-construit avec ses notes sur la construction du compilateur croisé (utilisé pour mettre à jour cette réponse).

Votre meilleur pari est d’utiliser un IDE multi-plateforme tel que Code :: Blocks , capable d’importer des projets MSVC, et de générer un Makefile pour Linux, que vous pourrez ensuite exécuter sous Linux (avec le même programme si vous le souhaitez).

Ainsi, votre stream de travail ressemblerait à ce qui suit:

 Code, Comstack, and debug on MSVC -> import into Code::Blocks & generate Makefile -> test comstack and debug with GCC -> copy to Linux with Code::Blocks -> test comstack & debug on Linux 

C’est un peu obtus, probablement, mais au moins Code :: Blocks s’occupe de beaucoup de ces petits détails avec des choses comme Makefiles, et non.

Voulez-vous quelque chose qui peut prendre le code écrit pour fonctionner sur Windows et le faire fonctionner sur Linux? Il n’y a pas vraiment de compilateur qui fait ça – mais peut-être que vous cherchez Wine ( http://www.winehq.org/ ) qui vous permet d’exécuter des applications Windows sur Linux (si elles utilisent des APIs, Wine a fait fausse route).

Edit: Je suppose que votre code utilise les API Windows (Win32, etc.) dans cette réponse. Si vous n’utilisez que le standard C ++ et les bibliothèques disponibles sur plusieurs plates-formes, alors il y a beaucoup d’autres réponses.

Je ne crois pas qu’il existe des compilateurs qui vous permettent de comstackr sous Windows, puis de prendre le binary résultant et de l’exécuter sur une machine Linux. Votre meilleur pari est de configurer deux environnements de développement, l’un sous Windows et l’autre sous Linux. Effectuez l’essentiel de votre développement et de votre débogage dans l’environnement Windows si c’est ce qui vous convient, puis comstackz et testez fréquemment sous Linux pour vous assurer que votre code est vraiment multi-plateforme. Vous souhaiterez également utiliser un système de génération et un framework de test multi-plateformes. Je recommande d’utiliser cmake et Google Test , respectivement.

Comstackr en Linux à partir de Windows sans utiliser la virtualisation ou le compilateur croisé, mais uniquement en mode natif via coLinux
Créez des fichiers exécutables Linux natifs sans laisser de fenêtres de redémarrage.
C / C ++ Comstackr pour Linux sous Windows via Cooperative Linux
La commutation la plus rapide entre Windows et Linux via ALT-TAB (aucun redémarrage ou redémarrage nécessaire).

1.Installez coLinux ( http://sourceforge.net/projects/colinux/files/latest/download?source=files )
2.Utilisez l’image du système de fichiers racine coLinux: Ubuntu-9.04-1gb.7z ( http://sourceforge.net/projects/colinux/files/Images%202.6.x%20Ubuntu/Ubuntu%209.04/ )
3.start coLinux
4.changez la chaîne “archive.ubuntu.com” en “old-releases.ubuntu.com” avec:
shell> sudo vi /etc/apt/sources.list
5. Mettez à jour votre configuration:
shell> sudo apt-get update
6.Installez deux logiciels pour pouvoir comstackr vos programmes:
shell> sudo apt-get install build-essential
(c / c ++, compilateurs gcc)
shell> sudo apt-get install libmysqlclient15-dev
(mysql dev 5.1)
7. Accès aux répertoires Windows à partir de coLinux
shell> monter cofs0 / mnt / -t cofs
shell> cd / mnt
8. comstackr
shell> c ++ your.source.cc -o exécutable.name