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

Threads & Processus C++ Discussion :

Cross compil Linux->Windows: mthreads


Sujet :

Threads & Processus C++

  1. #1
    Membre habitué
    Avatar de dj_benz
    Homme Profil pro
    Inscrit en
    Octobre 2002
    Messages
    178
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Octobre 2002
    Messages : 178
    Points : 135
    Points
    135
    Par défaut Cross compil Linux->Windows: mthreads
    Bonjour,

    Je suis relativement débutant avec les threads, d'ailleurs mon but principal n'est pas directement les threads, mais de faire compiler un programme simple GTK+ 3.0 pour windows.
    Je suis sur Ubuntu 12.04, et j'utilise NetBeans. Dans Makefile, j'appelle bien:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pkg-config --libs gtk+-3.0
    Idem dans les options du linker.

    Pour compiler pour windows, j'utilise i586-mingw32, mais le compilateur renvoie "option -mthreads unrecognized".

    Y a-t-il quelque chose de particulier à installer pour que les mthreads soient reconnues par MinGW?

    Merci d'avance.

  2. #2
    screetch
    Invité(e)
    Par défaut
    si tu veux cross-compiler, il te faudra aussi une version win32 de gtk. Je crois que la, tu essayes de compiler ton programme avec un compilateur windows mais les bibliotheques linux, ce qui ne marche pas.

    je ne sais pas trop comment pkg-config peut marcher pour la cross-compilation cependant.

  3. #3
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 629
    Points : 30 692
    Points
    30 692
    Par défaut
    Salut,

    Il serait déjà intéressant de savoir quelle est ta version de MinGW sous windows (en lançant, dans une invites de commandes, "gcc -v") car je ne suis pas sur du tout que tu aies une version récente du compilateur :p

    Ensuite, je ne suis pas sur du tout que pkg-config fonctionne sous windows

    Enfin, comme l'a fait remarquer screetch, il faut que tu installes la bibliothèque gtl 3+ sous windows, si tu veux l'utiliser, car elle n'est pas présente par défaut

    Une fois que tu auras tout cela, il est possible que tu doive modifier un tout petit peu ta configuration, mais il me semble que l'option mthreads est maintenant supportée, à condition d'avoir de disposer de pthreads

  4. #4
    Membre habitué
    Avatar de dj_benz
    Homme Profil pro
    Inscrit en
    Octobre 2002
    Messages
    178
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Octobre 2002
    Messages : 178
    Points : 135
    Points
    135
    Par défaut
    Bonjour,
    Merci pour vos réponses.

    Je pense que j'ai mal présenté mon environnement de travail. J'ai un dual boot ubuntu-12.04 et windows 7, mais je programme uniquement sous linux. Même la compilation pour windows se fait sous linux avec i586-mingw32 (je déplace l'EXE généré sur une partition windows pour tester depuis win7).
    J'ai installé MinGW sous linux car il m'a semblé voir, à la lecture de divers forums, que c'est la façon de faire. Je suis également débutant en cross-compilation.

    Mon but est donc de créer des interfaces graphiques pour windows, avec des outils open-source linux, et qui ne nécessitent aucune lib spécifique une fois l'EXE diffusé pour les utilisateurs windows (hormis peut-être 1 ou 2 DLL).

    Je pense me diriger vers wxWidgets (et wxGlade), pensez-vous que j'aurai les mêmes problèmes avec -mthreads?

    Merci d'avance.

  5. #5
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 629
    Points : 30 692
    Points
    30 692
    Par défaut
    Ah, oki...

    Mais cela ne change rien:

    Toutes les dépendances de ton application doivent être disponibles, au minimum sur ubuntu, dans la version de ta cible, même si c'est sous la forme d'une bibliothèque statique.

    La raison est simple: les fichiers binaires ne sont pas organisés de la meme manière sous windows que sous linux, et ce, malgré le fait qu'ils s'adressent, en définitive, au même type de processeur.

    On pourrait aussi arguer du fait que les conventions d'appel et jusqu'aux fonction supportées par le kernel sont différentes

    Il ne faut, en outre, pas oublier que, si tu utilises exclusivement des bibliothèques statiques, tu auras certes un exécutable "all-in-one", mais que cela se fera au dépend du poids de cet exécutable et de son évolutivité : si tu décides de passer à une version supérieure d'une seule des bibliothèques, tu es bon pour recompiler pour ainsi dire le tout

    En outre, je ne suis pas sur du tout que WxWidget (vu que tu en parles) soit disponible sous la forme de bibliothèque statique pour windows

    Enfin, bref, tu l'auras compris : si tu veux faire une compilation croisée, il faut que tu commences, sur ton hote, par assurer la présence de toues les bibliothèques que tu utilises pour la cible visée.

    Ce ne sera qu'une fois que tu auras assuré ce prérequis au niveau des dépendances que tu pourras envisager ta compilation croisée

    Mais je reviens encore une fois sur la version de MinGW que tu utilises...

    Pour autant qu'il m'en souvienne, les version "i586" de mingw sont pour le moins anciennes, à moins que tu ne l'aie compilé toi-même depuis des sources récentes

    Il serait "franchement pas mal" de t'assurer que la version de MinGW correspond, au minimum, à la version de Gcc qui est installé sur ubuntu

    Cela t'évitera au moins quelques surprises désagréables dues à des bugs corrigés ou à des fonctionnalités maintenant supportées

  6. #6
    Membre habitué
    Avatar de dj_benz
    Homme Profil pro
    Inscrit en
    Octobre 2002
    Messages
    178
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Octobre 2002
    Messages : 178
    Points : 135
    Points
    135
    Par défaut
    Bon, je vais commencer par installer proprement mes outils de cross-compilation, faire quelques essais avec des programmes basiques avec minGW, puis j'avancerai doucement vers wxWidgets et ses threads.

    Merci encore pour votre aide.

    Edit: j'ai, sur vos conseils, mis à jour i686-w64-mingw32-g++, il est maintenant égal à g++: version 4.6.3.

Discussions similaires

  1. Cross-compilation Linux vers Windows
    Par freemaul dans le forum Linux
    Réponses: 1
    Dernier message: 05/01/2011, 18h21
  2. [Windows] Cross-compilation Qt de Windows à Linux
    Par ggwtf dans le forum Plateformes
    Réponses: 5
    Dernier message: 19/03/2010, 11h48
  3. cross compilation linux -> windows
    Par LM_programme dans le forum GTK+ avec C & C++
    Réponses: 0
    Dernier message: 20/11/2009, 22h05
  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, 15h36
  5. Cross Compilation Linux Vers Windows
    Par allergen dans le forum Applications et environnements graphiques
    Réponses: 0
    Dernier message: 03/09/2007, 11h49

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