Qu'est-ce que la bibliothèque Gotk3 ? Il s'agit principalement d'un ensemble de liaisons de GTK3, un outil de création d'applications graphiques populaire sous Linux pour le langage de programmation GoLang. Sous Linux, vous pouvez créer n'importe quoi sans risque de bogues. Toutefois, les programmes Golang sont multiplateformes et peuvent être créés pour Windows également, de sorte que l'utilisateur peut rencontrer quelques difficultés.
Le problème est que l'environnement Ubuntu produit une multitude d'erreurs lors de la compilation. L'une des erreurs les plus fréquentes est l'erreur fatale : libintl.h : No such file or directory
. Cela indique un problème de GoLang pour trouver les bons fichiers d'en-tête C. Mais ce problème n'existe pas dans Archimed. Mais ce problème n'existe pas dans ArchLinux.
Pour la compilation croisée, il est recommandé aux utilisateurs d'utiliser ArchLinux avec DockerHub. Parfois, des erreurs se produisent et après avoir téléchargé l'image, vous verrez comment les corriger. La première étape consiste à télécharger l'image et à démarrer le conteneur en montant un dossier contenant votre projet à l'aide de volume
mount. Par exemple, le dossier /project
:
$ docker run -it --rm -v ~/go/src/KeywordsMixer/:/project archlinux/archlinux bash
En utilisant l'option --rm
, vous pouvez supprimer le conteneur après l'avoir quitté. Cela permet de libérer de l'espace sur le disque dur. Il y a un problème avec la glibc
dans la dernière image d'ArchLinux, à cause duquel pacman
ne fonctionne pas. Pour y remédier, exécutez cette commande :
$ patched_glibc=glibc-linux4-2.33-4-x86_64.pkg.tar.zst &&
curl -LO "https://repo.archlinuxcn.org/x86_64/$patched_glibc" &&
bsdtar -C / -xvf "$patched_glibc"
Il y a aussi parfois des problèmes avec les clés. Ce n'est pas un système fonctionnel, vous devriez donc désactiver la vérification des paquets pour ne pas avoir à chercher une solution à chaque fois. Voici comment procéder. Pour ce faire, dans la section [options]
du fichier /etc/pacman.conf
, changez le paramètre SigLevel
en Never
:
$ vim /etc/pacman.conf
[options]
SigLevel = Never
Ensuite, mettez à jour la base de données des paquets :
$ pacman -Sy
Installez les paquets requis :
$ pacman -S git go vim mingw-w64-gcc cairo pango pkg-config gtk3
Nous avons également besoin d'un paquet d'AUR
. Pour le charger, ajoutez cette section au fichier /etc/pacman.conf
:
$ vim /etc/pacman.conf
[ownstuff]
SigLevel = Never
Server = http://martchus.no-ip.biz/repo/arch/$repo/os/$arch
Installez ensuite le paquet :
$ pacman -S mingw-w64-gtk3
Par ailleurs, la dernière version de Golang inclut déjà des modules Go. Si, pour une raison quelconque, ils ne sont pas utilisés dans votre projet, vous devrez commencer à les utiliser. Il est préférable de configurer les modules et les dépendances du projet sur votre système de travail et de vérifier que tout est construit correctement pour Linux. La version gotk3 doit être prise à partir de la branche master
, car les versions plus anciennes ne sont pas construites avec cette version du langage :
$ got get github.com/gotk3/gotk3 master
Ensuite, allez dans le dossier du projet et exécutez la commande build :
$ cd /project
CGO_CFLAGS_ALLOW=".*" CGO_LDFLAGS_ALLOW=".*"
PKG_CONFIG_PATH=/usr/x86_64-w64-mingw32/lib/pkgconfig CC=x86_64-w64-mingw32-gcc CGO_ENABLED=1
GOOS=windows GOARCH=amd64 go build -v -tags gtk_3_24 -gcflags "-N -l" -ldflags "-s -w -H=windowsgui" -o main-windows-amd64.exe main.go
La construction peut prendre un certain temps, mais une fois qu'elle est terminée, vous verrez le fichier fini dans le dossier du projet.
Une fois l'installation terminée, l'utilisateur verra le fichier terminé dans le dossier du projet :
Pour éviter de répéter les mêmes étapes à chaque fois, utilisez un fichier Docker spécial :
$ vi Dockerfile
FROM archlinux/archlinux
RUN patched_glibc=glibc-linux4-2.33-4-x86_64.pkg.tar.zst &&
curl -LO "https://repo.archlinuxcn.org/x86_64/$patched_glibc" &&
bsdtar -C / -xvf "$patched_glibc"
RUN sed 's/SigLevel = Never/SigLevel = Never/g' /etc/pacman.conf
RUN pacman -Syu --noconfirm
RUN pacman -S git go mingw-w64-gcc cairo pango pkg-config gtk3 --noconfirm
RUN pacman -S vim --noconfirm
RUN echo "[ownstuff]" >> /etc/pacman.conf
RUN echo "SigLevel = Never" >> /etc/pacman.conf
RUN echo ''Server = http://martchus.no-ip.biz/repo/arch/$repo/os/$arch'' >> /etc/pacman.conf
RUN pacman -Sy --noconfirm
RUN pacman -S mingw-w64-gtk3 --noconfirm
Il se peut que vous deviez le bricoler et le modifier pour qu'il fonctionne.
Vous devez créer un répertoire séparé, y placer ce fichier et l'exécuter :
$ docker build
Après avoir exécuté la commande, l'ID du nouveau conteneur apparaîtra :
Vous pouvez ensuite démarrer le conteneur sur la base de l'image obtenue à l'aide de la commande :
$ docker run -it --rm -v ~/go/src/KeywordsMixer/:/project 028451c45c15 bash
Ceci termine l'instruction.