Ce este biblioteca Gotk3? Este în primul rând un set de legături ale GTK3, un instrument de creare a aplicațiilor grafice popular în Linux pentru limbajul de programare GoLang. În Linux, puteți construi orice fără bug-uri. Cu toate acestea, programele Golang sunt cross-platform și pot fi construite și pentru Windows, astfel încât utilizatorul poate avea unele dificultăți.
Problema este că mediul Ubuntu produce o mare de erori în timpul compilării. Una dintre erorile frecvente este eroarea fatală: libintl.h: No such file or directory
. Aceasta indică o problemă GoLang cu găsirea fișierelor de antet C corecte. Dar această problemă nu există în ArchLinux.
În scopul compilării încrucișate, se recomandă utilizatorilor să utilizeze ArchLinux cu DockerHub. Uneori apar erori și, după descărcarea imaginii, veți vedea cum să le remediați. Primul pas este să descărcați imaginea și să porniți containerul prin montarea unui folder cu proiectul dvs. în el folosind volumul
mount. De exemplu, la folderul /project
:
$ docker run -it --rm -v ~/go/src/KeywordsMixer/:/project archlinux/archlinux bash
Utilizând opțiunea --rm
, puteți șterge containerul după ieșirea din el. Acest lucru se face pentru a elibera spațiu pe hard disk. Există o problemă cu glibc
în cea mai recentă imagine ArchLinux, din cauza căreia pacman
nu funcționează. Pentru a o rezolva, executați această comandă:
$ 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"
Uneori există și probleme cu cheile. Acesta nu este un sistem funcțional, așa că ar trebui doar să dezactivați verificarea pachetelor pentru a nu fi nevoit să căutați o soluție de fiecare dată. Cum să faceți acest lucru. Pentru a face acest lucru, în secțiunea [options]
a fișierului /etc/pacman.conf
, modificați parametrul SigLevel
la Never
:
$ vim /etc/pacman.conf
[options]
SigLevel = Never
În continuare, actualizați baza de date a pachetelor:
$ pacman -Sy
Instalați pachetele necesare:
$ pacman -S git go vim mingw-w64-gcc cairo pango pkg-config gtk3
Avem nevoie și de un pachet de la AUR
. Pentru a-l încărca, adăugați această secțiune la fișierul /etc/pacman.conf
:
$ vim /etc/pacman.conf
[ownstuff]
SigLevel = Never
Server = http://martchus.no-ip.biz/repo/arch/$repo/os/$arch
Apoi instalați pachetul:
$ pacman -S mingw-w64-gtk3
Într-o notă separată, cea mai recentă versiune de Golang include deja module Go. Dacă, din anumite motive, acestea nu sunt utilizate în proiectul dumneavoastră, va trebui să începeți să le utilizați. Este mai bine să configurați modulele și dependențele proiectului pe sistemul dvs. de lucru și să verificați dacă totul este construit corect pentru Linux. Versiunea gotk3 trebuie luată din ramura master
, deoarece versiunile mai vechi nu sunt construite cu această versiune a limbajului:
$ got get github.com/gotk3/gotk3 master
Apoi, accesați folderul proiectului și executați comanda de compilare:
$ 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
Construcția poate dura destul de mult timp, dar după ce se termină veți vedea fișierul finalizat în folderul proiectului.
Când instalarea este finalizată, utilizatorul va vedea fișierul finalizat în folderul proiectului:
Pentru a evita repetarea acelorași pași de fiecare dată, utilizați un fișier Docker special:
$ 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
Este posibil să trebuiască să vă jucați cu el și să faceți modificări pentru a-l face să funcționeze.
Trebuie să creați un director separat, să plasați acest fișier în el și să îl executați:
$ docker build
După executarea comenzii, va apărea ID-ul noului container:
Apoi puteți porni containerul pe baza imaginii obținute cu comanda:
$ docker run -it --rm -v ~/go/src/KeywordsMixer/:/project 028451c45c15 bash
Acest lucru finalizează instrucțiunea.