Čo je knižnica Gotk3? Je to predovšetkým súbor väzieb GTK3, nástroja na tvorbu grafických aplikácií populárneho v Linuxe pre programovací jazyk GoLang. V systéme Linux môžete vytvoriť čokoľvek bez chýb. Programy Golang sú však multiplatformné a dajú sa zostaviť aj pre Windows, takže používateľ môže mať určité problémy.
Problémom je, že prostredie Ubuntu vytvára počas kompilácie more chýb. Jednou z častých chýb je fatálna chyba: libintl.h: No such file or directory.
Naznačuje to problém GoLangu s vyhľadaním správnych hlavičkových súborov jazyka C. Tento problém však v ArchLinuxe neexistuje.
Na účely krížovej kompilácie sa používateľom odporúča používať ArchLinux s DockerHubom. Niekedy sa vyskytnú chyby a po stiahnutí obrazu uvidíte, ako ich odstrániť. Prvým krokom je stiahnutie obrazu a spustenie kontajnera pripojením priečinka s vaším projektom pomocou pripojenia zväzku
. Napríklad do priečinka /project
:
$ docker run -it --rm -v ~/go/src/KeywordsMixer/:/project archlinux/archlinux bash
Pomocou možnosti --rm
môžete kontajner po jeho ukončení odstrániť. To sa robí preto, aby sa uvoľnilo miesto na pevnom disku. V najnovšom obraze ArchLinuxu je problém s glibc
, kvôli ktorému nefunguje pacman
. Ak ho chcete opraviť, spustite tento príkaz:
$ 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"
Niekedy sa vyskytujú aj problémy s kľúčmi. Toto nie je funkčný systém, takže by ste mali jednoducho vypnúť overovanie balíkov, aby ste nemuseli zakaždým hľadať riešenie. Ako to urobiť. Ak to chcete urobiť, v časti [options]
súboru /etc/pacman.conf
zmeňte parameter SigLevel
na Never
:
$ vim /etc/pacman.conf
[options]
SigLevel = Never
Ďalej aktualizujte databázu balíkov:
$ pacman -Sy
Nainštalujte požadované balíky:
$ pacman -S git go vim mingw-w64-gcc cairo pango pkg-config gtk3
Potrebujeme tiež jeden balík z AUR
. Ak ho chcete načítať, pridajte do súboru /etc/pacman.conf
túto časť:
$ vim /etc/pacman.conf
[ownstuff]
SigLevel = Never
Server = http://martchus.no-ip.biz/repo/arch/$repo/os/$arch
Potom nainštalujte balík:
$ pacman -S mingw-w64-gtk3
Na samostatnú poznámku, najnovšia verzia Golangu už obsahuje moduly Go. Ak ich z nejakého dôvodu vo svojom projekte nepoužívate, budete ich musieť začať používať. Je lepšie nakonfigurovať moduly a závislosti projektu vo vašom pracovnom systéme a skontrolovať, či je všetko správne zostavené pre Linux. Verzia gotk3 by mala byť prevzatá z hlavnej
vetvy, pretože staršie verzie nie sú zostavené s touto verziou jazyka:
$ got get github.com/gotk3/gotk3 master
Ďalej prejdite do priečinka projektu a spustite príkaz na zostavenie:
$ 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
Zostavenie môže trvať pomerne dlho, ale po jeho skončení uvidíte v priečinku projektu hotový súbor.
Po dokončení inštalácie uvidí používateľ v priečinku projektu hotový súbor:
Ak sa chcete vyhnúť opakovaniu rovnakých krokov zakaždým, použite špeciálny súbor Docker:
$ 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
Možno si s ním budete musieť pohrať a vykonať zmeny, aby fungoval.
Musíte vytvoriť samostatný adresár, umiestniť doň tento súbor a spustiť ho:
$ docker build
Po vykonaní príkazu sa zobrazí ID nového kontajnera:
Potom môžete kontajner spustiť na základe získaného obrazu pomocou príkazu:
$ docker run -it --rm -v ~/go/src/KeywordsMixer/:/project 028451c45c15 bash
Týmto sa pokyn ukončí.