Mokėjimo būdai Abuse

"Gotk3" programų, skirtų "Windows", kryžminis kompiliavimas į "Linux

  • Namai
  • Žinių bazė
  • "Gotk3" programų, skirtų "Windows", kryžminis kompiliavimas į "Linux
22.05.2021, 22:33

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žminis Gotk3 programų kompiliavimas

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ą.