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

GTK+ avec C & C++ Discussion :

[Linux][GTK] Portage vers Windows


Sujet :

GTK+ avec C & C++

  1. #1
    Membre habitué

    Homme Profil pro
    Enseignant
    Inscrit en
    septembre 2012
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : septembre 2012
    Messages : 120
    Points : 131
    Points
    131
    Par défaut [Linux][GTK] Portage vers Windows
    Salutations,

    Je ne suis plus très actif sur le forum, soucis de santé et problèmes personnels à gérer qui prennent du temps :{

    Je suis en train d'essayer de démontrer qu'il est possible de prendre le code portable incluant la librairie GTK3 développée sous Linux et de "simplement" installer la librairie GTK sous Windows et de recompiler pour obtenir exactement les mêmes résultats.
    Il semblerait que ce ne soit aussi simple :{ C'est là que nous saluerons Java et éventuellement .net.

    Apparemment sous Cygwin il n'y a rien de prévu de base pour télécharger des paquets additionnels (comme zypper, apt-get sous Linux).
    Sous MSys2, c'est mieux, mais ça ne marche pas... déjà il n'y a rien qui fonctionne "une fois installé", il faut spécifier à la main comment pkg-config fonctionne, en ajoutant une variable d'environnement dans bash.bashrc :{

    Ensuite à la compilation, il semblerait que les posix threads ne soient pas pris en compte dans MSys2 ce qui est tout de même très embarrassant et puis concernant GTK3 voici le genre d'erreurs qui indiquent peut-être que GTK3 est en 32bits au lieu de 64bits :{
    En fait, je n'ai jamais eu ce type d'erreur donc je me renseigne, mais ça m'a tout l'air d'être un soucis lié à la taille des registres.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    hurukan@VirtualWin7 MSYS /gtkarduino
    # make
    cc `pkg-config --libs gtk+-3.0`  `pkg-config --cflags gtk+-3.0`  gtkarduino.c detecterarduino.c   -o gtkarduino
    gtkarduino.c: Dans la fonction «*main*»:
    gtkarduino.c:134:2: attention: déclaration implicite de la fonction «*pthread_create*»; vouliez-vous utiliser «*g_thread_create*»*? [-Wimplicit-function-declaration]
      134 |  pthread_create(&detecter,NULL,(void*)&thread_detecter,NULL);
          |  ^~~~~~~~~~~~~~
          |  g_thread_create
    gtkarduino.c: Dans la fonction «*thread_detecter*»:
    gtkarduino.c:188:3: attention: déclaration implicite de la fonction «*sleep*» [-Wimplicit-function-declaration]
      188 |   sleep(1);
          |   ^~~~~
    gtkarduino.c:190:2: attention: déclaration implicite de la fonction «*pthread_exit*»; vouliez-vous utiliser «*g_thread_exit*»*? [-Wimplicit-function-declaration]
      190 |  pthread_exit(NULL);
          |  ^~~~~~~~~~~~
          |  g_thread_exit
    /tmp/ccKSJCJy.o:gtkarduino.c:(.text+0x52)*: référence indéfinie vers «*gtk_init_abi_check*»
    /tmp/ccKSJCJy.o:gtkarduino.c:(.text+0x52): relocalisation tronquée pour concorder avec la taille*: R_X86_64_PC32 vers le symbole indéfini gtk_init_abi_check
    /tmp/ccKSJCJy.o:gtkarduino.c:(.text+0x5c)*: référence indéfinie vers «*gtk_window_new*»
    /tmp/ccKSJCJy.o:gtkarduino.c:(.text+0x5c): relocalisation tronquée pour concorder avec la taille*: R_X86_64_PC32 vers le symbole indéfini gtk_window_new
    /tmp/ccKSJCJy.o:gtkarduino.c:(.text+0x83)*: référence indéfinie vers «*gtk_window_set_default_size*»
    /tmp/ccKSJCJy.o:gtkarduino.c:(.text+0x83): relocalisation tronquée pour concorder avec la taille*: R_X86_64_PC32 vers le symbole indéfini gtk_window_set_default_size
    /tmp/ccKSJCJy.o:gtkarduino.c:(.text+0x9a)*: référence indéfinie vers «*gtk_window_set_resizable*»
    /tmp/ccKSJCJy.o:gtkarduino.c:(.text+0x9a): relocalisation tronquée pour concorder avec la taille*: R_X86_64_PC32 vers le symbole indéfini gtk_window_set_resizable
    /tmp/ccKSJCJy.o:gtkarduino.c:(.text+0xb1)*: référence indéfinie vers «*gtk_window_set_position*»
    Bon déjà les erreurs affichées en français ça craint (les traductions sont souvent approximatives et victimes de faux-amis) et puis c'est frustrant d'être parti d'une hypothèse qui s'avère incorrecte :{
    'faudrait que j'essaye sur un "vrai windows" sans passer par la machine virtuelle, perdant de ce fait la possibilité de faire des comparaisons avec le projet initial qui fonctionne magnifiquement sous Linux.

    Au pire si g_thread_create() fonctionne de la manière que pthread_create() je trouverais sans doute une solution (workaround) par contre concernant les erreurs à l'édition des liens... je suis pas certain de mon coup.

    Ma/mes question(s):

    Je sais que Cygwin, pour l'avoir essayé l'année passée, est "POSIX compliant" donc ça devrait fonctionner avec pthread_create() cependant je n'ai trouvé aucun moyen d'ajouter GTK3 dans l'environnement Cygwin :{

    1. Comment résoudre le soucis de "truncated relocation" indiqué par l'éditeur de liens.
    2. Comment installer quelque chose de similaire à "pacman" de MSys2 sur Cygwin ?

  2. #2
    Responsable Systèmes


    Homme Profil pro
    Technicien maintenance
    Inscrit en
    août 2011
    Messages
    11 872
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : août 2011
    Messages : 11 872
    Points : 26 663
    Points
    26 663
    Par défaut
    Regardes si tu as pas un paquet genre gtk3-dev depuis l'installeur cygwin
    Pour pthread, regardes ceci.

    pacman semble inclus avec MSYS2.

    Sinon, essayes peut-être de compiler avec MinGW.

    Pour le prob. de truncated relocation, t'aurais pas des bibliothèques 32 bits et d'autres 64 bits ?
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur la création d'un système : http://chrtophe.developpez.com/tutoriels/minisysteme/
    Mon article sur le P2V : http://chrtophe.developpez.com/tutoriels/p2v/
    Consultez nos FAQ : Windows, Linux, Virtualisation

  3. #3
    Membre habitué

    Homme Profil pro
    Enseignant
    Inscrit en
    septembre 2012
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : septembre 2012
    Messages : 120
    Points : 131
    Points
    131
    Par défaut
    Librairies 32bits/64bits (comme annoncé)

    Oui, je ne sais pas vraiment vérifier les versions 32/64bits sous Windows: ldd et consors ne semblent pas disponibles, je vais vérifier cela quand j'en aurais le temps ^^

    Pour les threads, c'est vrai que je pars toujours du principe que -lpthread est ajouté par défaut dans la procédure de compilation comme c'est le cas sous Linux :{ Du coup je vais modifier mon makefile pour ajouter la librairie :{

    Merci pour le coup de main, je vais bien finir par m'en sortir ^^

Discussions similaires

  1. Portage Appli Windows vers linux (C++)
    Par magic-moad dans le forum C++
    Réponses: 5
    Dernier message: 14/04/2010, 16h14
  2. Problème portage code Linux vers Windows
    Par scary dans le forum Windows
    Réponses: 14
    Dernier message: 11/01/2010, 18h56
  3. problème portage ioctl socket Linux vers Windows
    Par progfou dans le forum Réseau
    Réponses: 19
    Dernier message: 06/10/2009, 20h44
  4. Problème de portage Linux vers Windows, wxwidgets
    Par zoom* dans le forum wxWidgets
    Réponses: 6
    Dernier message: 22/07/2008, 10h59
  5. Portage vers Windows à l'aide de cygwin
    Par bdaone dans le forum Windows
    Réponses: 1
    Dernier message: 21/05/2007, 10h22

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