Mis on Gotk3 raamatukogu? Tegemist on peamiselt GTK3, Linuxis populaarse graafiliste rakenduste loomise vahendi GoLangi programmeerimiskeele sidemete komplektiga. Linuxis saab ehitada mida iganes ilma vigadeta. Golangi programmid on aga platvormideülesed ja neid saab ehitada ka Windowsile, nii et kasutajal võib tekkida mõningaid raskusi.
Probleemiks on see, et Ubuntu keskkond tekitab kompileerimise ajal mereliselt vigu. Üks sagedastest vigadest on fatal error: libintl.h: No such file or directory
. See viitab GoLangi probleemile õigete C päisefailide leidmisel. ArchLinuxis seda probleemi aga ei ole.
Ristkompileerimiseks soovitatakse kasutajatel kasutada ArchLinuxi koos DockerHubiga. Mõnikord tekivad vead ja pärast kujutise allalaadimist näete, kuidas neid parandada. Esimene samm on kujutise allalaadimine ja konteineri käivitamine, monteerides kausta, milles on teie projekt, kasutades volume
mount'i. Näiteks kausta /project
:
$ docker run -it --rm -v ~/go/src/KeywordsMixer/:/project archlinux/archlinux bash
Kasutades valikut --rm
, saate konteinerit pärast väljumist kustutada. Seda tehakse selleks, et vabastada ruumi kõvakettal. Viimases ArchLinuxi image'is on probleem glibc-ga
, mille tõttu pacman
ei tööta. Selle parandamiseks käivitage see käsk:
$ 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"
Mõnikord on probleeme ka võtmetega. Tegemist ei ole toimiva süsteemiga, seega peaksite lihtsalt pakettide kontrollimise välja lülitama, et te ei peaks iga kord lahendust otsima. Kuidas seda teha. Selleks muutke faili /etc/pacman.conf
jaotises [options]
parameetri SigLevel
väärtuseks Never
:
$ vim /etc/pacman.conf
[options]
SigLevel = Never
Järgmisena värskendage pakettide andmebaasi:
$ pacman -Sy
Paigaldage vajalikud paketid:
$ pacman -S git go vim mingw-w64-gcc cairo pango pkg-config gtk3
Me vajame ka ühte paketti AURist
. Selle laadimiseks lisage see lõik faili /etc/pacman.conf
:
$ vim /etc/pacman.conf
[ownstuff]
SigLevel = Never
Server = http://martchus.no-ip.biz/repo/arch/$repo/os/$arch
Seejärel installige pakett:
$ pacman -S mingw-w64-gtk3
Eraldi märkus: Golangi uusim versioon sisaldab juba Go-mooduleid. Kui mingil põhjusel ei kasutata neid teie projektis, siis peate neid kasutama hakkama. Parem on konfigureerida projekti moodulid ja sõltuvused oma töösüsteemis ja kontrollida, et kõik on Linuxi jaoks õigesti ehitatud. Gotk3 versioon tuleks võtta master-harust
, sest vanemaid versioone ei ehitata selle keeleversiooniga:
$ got get github.com/gotk3/gotk3 master
Seejärel minge projekti kausta ja käivitage build-käsu:
$ 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
Build võib võtta üsna kaua aega, kuid pärast selle lõpetamist näete projekti kaustas valmis faili.
Kui paigaldus on lõpetatud, näeb kasutaja valmis faili projektikaustas:
Et vältida samade sammude kordamist korduvalt, kasutage spetsiaalset Dockerfile'i:
$ 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
Võib-olla peate sellega nuputama ja tegema muudatusi, et see töötaks.
Peate looma eraldi kataloogi, paigutama selle faili sinna ja käivitama selle:
$ docker build
Pärast käsu täitmist ilmub uue konteineri ID:
Seejärel saate saadud kujutise põhjal konteineri käivitada käsuga:
$ docker run -it --rm -v ~/go/src/KeywordsMixer/:/project 028451c45c15 bash
Sellega on käsk lõpetatud.