Kas yra Gotk3 biblioteka? Pirmiausia tai yra GTK3, "Linux" sistemoje populiarios grafinių programų kūrimo priemonės, skirtos GoLang programavimo kalbai, sąsajų rinkinys. Linux sistemoje galite kurti bet ką be klaidų. Tačiau "Golang" programos yra daugiaplatformės ir gali būti kuriamos ir "Windows", todėl naudotojas gali susidurti su tam tikrais sunkumais.
Problema ta, kad "Ubuntu" aplinka kompiliavimo metu sukuria jūrą klaidų. Viena iš dažnai pasitaikančių klaidų yra fatal error: libintl.h: No such file or directory.
Ji rodo GoLang problemą ieškant tinkamų C antraštinių failų. Tačiau "ArchLinux" ši problema neegzistuoja.
Kryžminiam kompiliavimui naudotojams rekomenduojama naudoti ArchLinux su DockerHub. Kartais pasitaiko klaidų, o atsisiuntę atvaizdą pamatysite, kaip jas ištaisyti. Pirmasis žingsnis - atsisiųsti atvaizdą ir paleisti konteinerį, prijungiant aplanką su jame esančiu projektu naudojant volume
mount. Pavyzdžiui, į aplanką /project
:
$ docker run -it --rm -v ~/go/src/KeywordsMixer/:/project archlinux/archlinux bash
Naudodami parinktį --rm
, galite ištrinti konteinerį iš jo išėję. Tai daroma siekiant atlaisvinti vietos kietajame diske. Naujausiame "ArchLinux" atvaizde yra glibc
problema, dėl kurios neveikia pacman
. Norėdami ją ištaisyti, paleiskite šią komandą:
$ 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"
Taip pat kartais kyla problemų su raktais. Tai nėra veikianti sistema, todėl turėtumėte tiesiog išjungti paketų tikrinimą, kad nereikėtų kaskart ieškoti sprendimo. Kaip tai padaryti. Norėdami tai padaryti, /etc/pacman.conf
failo [options]
skirsnyje pakeiskite parametrą SigLevel
į Never
:
$ vim /etc/pacman.conf
[options]
SigLevel = Never
Tada atnaujinkite paketų duomenų bazę:
$ pacman -Sy
Įdiekite reikiamus paketus:
$ pacman -S git go vim mingw-w64-gcc cairo pango pkg-config gtk3
Taip pat reikia vieno paketo iš AUR
. Norėdami jį įkelti, į /etc/pacman.conf
įrašykite šį skirsnį:
$ vim /etc/pacman.conf
[ownstuff]
SigLevel = Never
Server = http://martchus.no-ip.biz/repo/arch/$repo/os/$arch
Tada įdiekite paketą:
$ pacman -S mingw-w64-gtk3
Atskira pastaba: naujausioje "Golang" versijoje jau yra "Go" moduliai. Jei dėl kokių nors priežasčių jie nenaudojami jūsų projekte, turėsite pradėti juos naudoti. Geriau sukonfigūruokite projekto modulius ir priklausomybes savo darbinėje sistemoje ir patikrinkite, ar viskas teisingai sukurta "Linux". Gotk3 versiją reikia imti iš pagrindinės
šakos, nes senesnės versijos nesukuriamos su šia kalbos versija:
$ got get github.com/gotk3/gotk3 master
Tada eikite į projekto aplanką ir paleiskite kūrimo komandą:
$ 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
Surinkimas gali užtrukti gana ilgai, tačiau jam pasibaigus projekto aplanke pamatysite baigtą failą.
Kai diegimas bus baigtas, naudotojas projekto aplanke matys baigtą failą:
Kad nereikėtų kartas nuo karto kartoti tų pačių veiksmų, naudokite specialų "Docker" failą:
$ 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
Kad jis veiktų, gali tekti su juo padirbėti ir padaryti pakeitimų.
Reikia sukurti atskirą katalogą, įdėti į jį šį failą ir jį paleisti:
$ docker build
Įvykdžius komandą, pasirodys naujo konteinerio ID:
Tada pagal gautą atvaizdą galite paleisti konteinerį komanda:
$ docker run -it --rm -v ~/go/src/KeywordsMixer/:/project 028451c45c15 bash
Tai užbaigia instrukciją.