Co je knihovna Gotk3? Je to především sada vazeb GTK3, nástroje pro tvorbu grafických aplikací oblíbeného v Linuxu pro programovací jazyk GoLang. V Linuxu můžete vytvářet cokoli bez chyb. Programy v jazyce Golang jsou však multiplatformní a lze je vytvářet i pro Windows, takže uživatel může mít určité potíže.
Problémem je, že prostředí Ubuntu vytváří při kompilaci moře chyb. Jednou z častých chyb je fatální chyba: libintl.h: No such file or directory
. To značí problém GoLangu s nalezením správných hlavičkových souborů jazyka C. V ArchLinuxu se však tento problém nevyskytuje.
Pro účely křížové kompilace se uživatelům doporučuje používat ArchLinux s DockerHubem. Občas se vyskytnou chyby a po stažení obrazu se dozvíte, jak je opravit. Prvním krokem je stažení obrazu a spuštění kontejneru připojením složky s vaším projektem pomocí připojení svazku
. Například do složky /project
:
$ docker run -it --rm -v ~/go/src/KeywordsMixer/:/project archlinux/archlinux bash
Pomocí volby --rm
můžete kontejner po jeho ukončení odstranit. To se provádí za účelem uvolnění místa na pevném disku. V nejnovějším obrazu ArchLinuxu je problém s glibc
, kvůli kterému nefunguje pacman
. Chcete-li jej opravit, spusťte tento pří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"
Občas se také vyskytují problémy s klíči. Nejedná se o funkční systém, takže byste měli prostě vypnout ověřování balíčků, abyste nemuseli pokaždé hledat řešení. Jak to udělat. Chcete-li to provést, změňte v části [options]
souboru /etc/pacman.conf
parametr SigLevel
na Never
:
$ vim /etc/pacman.conf
[options]
SigLevel = Never
Dále aktualizujte databázi balíčků:
$ pacman -Sy
Nainstalujte požadované balíčky:
$ pacman -S git go vim mingw-w64-gcc cairo pango pkg-config gtk3
Potřebujeme také jeden balíček z AUR
. Chcete-li jej načíst, přidejte do souboru /etc/pacman.conf
tuto sekci:
$ vim /etc/pacman.conf
[ownstuff]
SigLevel = Never
Server = http://martchus.no-ip.biz/repo/arch/$repo/os/$arch
Poté balíček nainstalujte:
$ pacman -S mingw-w64-gtk3
Samostatnou poznámkou je, že nejnovější verze Golangu již obsahuje moduly Go. Pokud je z nějakého důvodu ve svém projektu nepoužíváte, budete je muset začít používat. Je lepší nakonfigurovat moduly a závislosti projektu ve svém pracovním systému a zkontrolovat, zda je vše správně sestaveno pro Linux. Verzi gotk3 je třeba převzít z hlavní
větve, protože starší verze nejsou s touto verzí jazyka sestaveny:
$ got get github.com/gotk3/gotk3 master
Dále přejděte do složky projektu a spusťte příkaz 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
Sestavení může trvat poměrně dlouho, ale po jeho dokončení uvidíte ve složce projektu hotový soubor.
Po dokončení instalace uvidí uživatel ve složce projektu hotový soubor:
Chcete-li se vyhnout opakování stejných kroků po sobě, použijte speciální soubor 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žná si s ním budete muset pohrát a provést změny, aby fungoval.
Je třeba vytvořit samostatný adresář, umístit do něj tento soubor a spustit jej:
$ docker build
Po provedení příkazu se zobrazí ID nového kontejneru:
Poté můžete kontejner spustit na základě získaného obrazu příkazem:
$ docker run -it --rm -v ~/go/src/KeywordsMixer/:/project 028451c45c15 bash
Tím je instrukce dokončena.