IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Cross-compilation: Linux -> Windows


Sujet :

C

  1. #1
    Futur Membre du Club Avatar de Cycnos
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 11
    Points : 8
    Points
    8
    Par défaut Cross-compilation: Linux -> Windows
    Bonjour, je ne sais pas si je suis dans la bonne section, désolé si je me suis trompé..

    Alors voila je vous explique. Je suis étudiant en informatique qui passe en 2ème année en septembre et j'ai du réalisé un projet de fin d'année en C avec comme objectif la création d'un jeu vidéo avec SDL sous linux.
    On ne m'a pas appris grand chose sur la compilation, juste sur l'utilisation de gcc et un peu sur la conception d'un makefile. On recherchant sur internet comment faire pour compiler de linux pour Windows je n'ai pas réussi la démarche sachant qu'il faut que j'intègre SDL et TTF.

    Quelqu'un pourrait m'expliquer comment faire exactement car la démarche est flou, j'ai vu qu'il fallait faire de la compilation static ? Fin je comprend rien, des précisions me serait très utile ! Merci pour votre aide !

  2. #2
    Membre émérite
    Homme Profil pro
    sans emploi
    Inscrit en
    Janvier 2014
    Messages
    539
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : sans emploi
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2014
    Messages : 539
    Points : 2 601
    Points
    2 601
    Par défaut
    Bonjour,

    Je vais te donner dans un premier temps un petit aperçu de ce qui se passe quand tu compiles avec un outil comme gcc.

    On part du code source le fameux .c, dans un premier temps on le donne au préprocesseur C qui ne va se préoccuper que des lignes qui commencent par un # (les #include , les #define, les #if, ...). Il va créer un nouveau fichier qui va être envoyé au compilateur qui va faire le gros du boulot : analyse syntaxique, sémantique, optimisation, etc. Le compilateur va créer un code assembleur qui sera transmit à l'assembleur qui lui va créer un fichier objet. Finalement, si tu crées un exécutable, l'éditeur des liens va lier tous les fichiers objets, chercher les références dans les bibliothèques (dont une très importante la lib C) pour le créer.
    GCC appelle les bons outils au bon moment de manière transparente pour toi. Il existe par exemple les outils cpp qui est le préprocesseur(preprocessor), as qui est l'assembleur(assembler), ld l'éditeur des liens (linker), mais d'autres encore. Ensemble ils forment la chaîne de compilation (toolchain en anglais).

    Une image pour résumer tout ça, en espérant ne pas avoir été trop long :

    Nom : compil_f2.png
Affichages : 1287
Taille : 48,4 Ko

    Venons-en à la compilation croisée (cross compiling). Il s'agit d'une chaîne de compilation qui s'exécute dans un environnement hôte (host, Linux pour toi) et qui crée des fichiers adaptés à un autre environnement cible (target, Windows pour toi). Il te faudra disposer non seulement des outils de la chaîne de compilation, mais également des fichiers d'entête de la plateforme cible ainsi que «de ce qu'il va falloir à l'éditeur de liens». Sur le schéma précédent, en vert tu as ce qui est indépendant de la plateforme (tes sources), en bleu ce qui est crée au format cible et en rouge ce que tu dois déjà posséder pour que cela fonctionne.

    Une chaîne pour faire de la compilation croisée de Linux vers Windows est par exemple MingW. Il faut commencer par l'installer sur ta distribution. Ensuite il te faut des versions cibles des bibliothèques que ton projet utilise, par exemple pour la SDL vérifie que ta distribution les fournit, si ce n'est pas les cas tu peux soit les recompiler ou voir si ce que ce projet sourceforge propose te convient.

    Il va également falloir modifier le makefile pour la compilation croisée. En compilant «normalement» tu utilises la commande gcc. Il y aura 2 «gcc» pour la compilation croisée, le premier qui est prévue pour windows 32bit i686-w64-mingw32-gcc et celui pour windows 64bit x86_64-w64-mingw32-gcc.

    Si dans ton makefile tu as quelque chose comme :
    pour la compilation croisée tu auras
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CC  = x86_64-w64-mingw32-gcc
    Ensuite, il y a toujours beaucoup de détails qui font déraper, mais rien d'insurmontable.

  3. #3
    Futur Membre du Club Avatar de Cycnos
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 11
    Points : 8
    Points
    8
    Par défaut
    Merci pour le petit cours C au début, ça m'aide beaucoup !
    Quand tu parles des fichiers à posséder en rouge, tu entends quoi par fichiers d'en-têtes et fichiers bibliothèques ? Les bibliothèques ça va être genre SDL et les en-têtes celles de SDL aussi ? Il faut donc que je télécharge ses fichiers pour Windows ?

  4. #4
    Membre émérite
    Homme Profil pro
    sans emploi
    Inscrit en
    Janvier 2014
    Messages
    539
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : sans emploi
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2014
    Messages : 539
    Points : 2 601
    Points
    2 601
    Par défaut
    Oui. Regarde la page Cross compilation with SDL.
    Enfin, le plus simple reste quand même d'installer un environnement de développement sur Windows si c'est faisable.

  5. #5
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 826
    Points : 218 287
    Points
    218 287
    Billets dans le blog
    117
    Par défaut
    Bonjour,

    Même si cela n'est pas didactique, je conseille vivement de simplement lancer le système cible dans une machine virtuelle, d'installer un compilateur et de recompiler le projet dans la machine virtuelle. Ainsi, vous aurez l'exécutable pour la plateforme cible.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  6. #6
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 215
    Points : 10 140
    Points
    10 140
    Par défaut
    Citation Envoyé par LittleWhite Voir le message
    Bonjour,

    Même si cela n'est pas didactique, je conseille vivement de simplement lancer le système cible dans une machine virtuelle, d'installer un compilateur et de recompiler le projet dans la machine virtuelle. Ainsi, vous aurez l'exécutable pour la plateforme cible.
    Je suis d'accord mais il y a plus simple et plus rapide de mon point de vue wine , chez moi ça me prend 5 seconde pour compiler sur windows (je suis sur linux).

  7. #7
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 597
    Points : 7 832
    Points
    7 832
    Par défaut
    Tu peux facilement installer un environnement de programmation sous win ?
    Mon but serait de compiler pour gtk+3.

    J'ai cassé ma virtualmachine
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

  8. #8
    Expert confirmé
    Inscrit en
    Mars 2005
    Messages
    1 431
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 1 431
    Points : 4 182
    Points
    4 182
    Par défaut
    Il suffit d'installer MSYS2 puis :
    Ou bien Cygwin (un peu plus une usine à gaz).

  9. #9
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 597
    Points : 7 832
    Points
    7 832
    Par défaut
    Bonjour

    Je ne trouve aucune explication sur pacman en dehors du jeu vintage. Et le peu que je trouve sur msys2 me donne l'impression que c'est pour windows ( https://msys2.github.io/ ) .
    Si j'essaie de compiler pour windows mon programme, il me dit qu'il lui manque windows.h . C'est peut-être que j'ai mal configuré code::blocks. Un makefile spécial me conviendrait aussi.

    Ceci dit, j'ai réparé ma virtualbox : http://www.developpez.net/forums/d15...este-plus-vdi/ . Mais, là aussi, je n'arrive pas à compiler mon projet
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

  10. #10
    Expert confirmé
    Inscrit en
    Mars 2005
    Messages
    1 431
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 1 431
    Points : 4 182
    Points
    4 182
    Par défaut
    Citation Envoyé par troumad Voir le message
    Je ne trouve aucune explication sur pacman en dehors du jeu vintage.
    https://wiki.archlinux.org/index.php/Pacman

    Effectivement c'est pour Windows, mon message répondait à ta question :
    Citation Envoyé par troumad Voir le message
    Tu peux facilement installer un environnement de programmation sous win ?

  11. #11
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 597
    Points : 7 832
    Points
    7 832
    Par défaut
    Citation Envoyé par Matt_Houston Voir le message
    Effectivement c'est pour Windows, mon message répondait à ta question :
    Oups... J'ai oublié le "e" à la fin de wine...
    La question était plutôt comment compiler pour windows en utilisant l'émulateur windows "wine" sous Linux.
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

Discussions similaires

  1. Cross-compilation Linux vers Windows
    Par freemaul dans le forum Linux
    Réponses: 1
    Dernier message: 05/01/2011, 19h21
  2. [Windows] Cross-compilation Qt de Windows à Linux
    Par ggwtf dans le forum Plateformes
    Réponses: 5
    Dernier message: 19/03/2010, 12h48
  3. cross compilation linux -> windows
    Par LM_programme dans le forum GTK+ avec C & C++
    Réponses: 0
    Dernier message: 20/11/2009, 23h05
  4. Cross compilation Linux->Windows d'une appli gtkmm/cairomm
    Par three minute hero dans le forum Autres éditeurs
    Réponses: 0
    Dernier message: 30/12/2007, 16h36
  5. Cross Compilation Linux Vers Windows
    Par allergen dans le forum Applications et environnements graphiques
    Réponses: 0
    Dernier message: 03/09/2007, 12h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo