Vad är Gotk3-biblioteket? Det är främst en uppsättning bindningar av GTK3, ett grafiskt verktyg för skapande av applikationer som är populärt i Linux för programmeringsspråket GoLang. I Linux kan du bygga vad som helst utan buggar. Golang-program är dock plattformsoberoende och kan byggas för Windows också, så användaren kan ha vissa svårigheter.
Problemet är att Ubuntu-miljön producerar ett hav av fel under kompilering. Ett av de vanligaste felen är fatal error: libintl.h: No such file or directory.
Det indikerar ett GoLang-problem med att hitta rätt C-headerfiler. Men det här problemet finns inte i ArchLinux.
För att kunna korskompilera rekommenderas användare att använda ArchLinux med DockerHub. Ibland uppstår fel och efter att ha laddat ner bilden kommer du att se hur du fixar dem. Det första steget är att ladda ner avbildningen och starta behållaren genom att montera en mapp med ditt projekt i den med hjälp av volume
mount. Till exempel till mappen /project
:
$ docker run -it --rm -v ~/go/src/KeywordsMixer/:/project archlinux/archlinux bash
Genom att använda alternativet --rm
kan du ta bort behållaren efter att du har avslutat den. Detta görs för att frigöra utrymme på hårddisken. Det finns ett problem med glibc
i den senaste ArchLinux-imagen, vilket gör att pacman
inte fungerar. För att åtgärda det, kör det här kommandot:
$ 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"
Det finns också ibland problem med nycklar. Detta är inte ett fungerande system, så du bör bara inaktivera paketverifiering så att du inte behöver leta efter en lösning varje gång. Hur man gör detta. För att göra detta, i avsnittet [options]
i filen /etc/pacman.conf
, ändra parametern SigLevel
till Never
:
$ vim /etc/pacman.conf
[options]
SigLevel = Never
Uppdatera sedan paketdatabasen:
$ pacman -Sy
Installera de paket som krävs:
$ pacman -S git go vim mingw-w64-gcc cairo pango pkg-config gtk3
Vi behöver också ett paket från AUR
. För att ladda det lägger du till det här avsnittet i /etc/pacman.conf
:
$ vim /etc/pacman.conf
[ownstuff]
SigLevel = Never
Server = http://martchus.no-ip.biz/repo/arch/$repo/os/$arch
Installera sedan paketet:
$ pacman -S mingw-w64-gtk3
På en separat anmärkning innehåller den senaste versionen av Golang redan Go-moduler. Om de av någon anledning inte används i ditt projekt måste du börja använda dem. Det är bättre att konfigurera modulerna och beroendena i projektet på ditt arbetssystem och kontrollera att allt är korrekt byggt för Linux. Gotk3-versionen bör tas från huvudgrenen
, eftersom äldre versioner inte är byggda med den här versionen av språket:
$ got get github.com/gotk3/gotk3 master
Gå sedan till projektmappen och kör kommandot build:
$ 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
Byggandet kan ta ganska lång tid, men när det är klart kommer du att se den färdiga filen i projektmappen.
När installationen är klar kommer användaren att se den färdiga filen i projektmappen:
För att undvika att upprepa samma steg gång på gång, använd en speciell Dockerfil:
$ 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
Du kan behöva pilla med den och göra ändringar för att få den att fungera.
Du måste skapa en separat katalog, placera den här filen i den och köra den:
$ docker build
När du har kört kommandot visas ID för den nya behållaren:
Sedan kan du starta behållaren baserat på den erhållna bilden med kommandot:
$ docker run -it --rm -v ~/go/src/KeywordsMixer/:/project 028451c45c15 bash
Detta avslutar instruktionen.