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.
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 :{
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*»
'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 ?
Partager