Makseviisid Abuse

Gotk3 rakenduste ristkompileerimine Windowsi jaoks Linuxi jaoks

22.05.2021, 22:33

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.

Gotk3 rakenduste ristkompileerimine

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:

Gotk3 rakenduste ristkompileerimine Windowsi jaoks Linuxi jaoks

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:

Gotk3 rakenduste ristkompileerimine Windowsi jaoks Linuxi jaoks

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.