Какво представлява библиотеката Gotk3? Това е предимно набор от свързвания на GTK3, популярен в Linux инструмент за създаване на графични приложения на езика за програмиране GoLang. В Linux можете да създавате всичко без грешки. Програмите на Golang обаче са междуплатформени и могат да се създават и за Windows, така че потребителят може да срещне известни трудности.
Проблемът се състои в това, че средата на Ubuntu произвежда море от грешки по време на компилирането. Една от често срещаните грешки е фаталната грешка: libintl.h: No such file or directory.
Тя показва проблем на GoLang с намирането на правилните заглавни файлове на C. Но този проблем не съществува в ArchLinux.
За целите на кръстосаното компилиране на приложенията на потребителите се препоръчва да използват ArchLinux с DockerHub. Понякога се появяват грешки и след като изтеглите изображението, ще видите как да ги отстраните. Първата стъпка е да изтеглите образа и да стартирате контейнера, като монтирате папка с вашия проект в нея с помощта на volume
mount. Например, към папката /project
:
$ docker run -it --rm -v ~/go/src/KeywordsMixer/:/project archlinux/archlinux bash
С помощта на опцията --rm
можете да изтриете контейнера, след като го напуснете. Това се прави, за да се освободи място на твърдия диск. В последния образ на ArchLinux има проблем с glibc
, поради който pacman
не работи. За да го поправите, изпълнете тази команда:
$ 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"
Понякога има проблеми и с ключовете. Това не е работеща система, така че трябва просто да изключите проверката на пакетите, за да не се налага да търсите решение всеки път. Как да направите това. За да направите това, в раздела [options]
на файла /etc/pacman.conf
променете параметъра SigLevel
на Never
:
$ vim /etc/pacman.conf
[options]
SigLevel = Never
След това актуализирайте базата данни с пакети:
$ pacman -Sy
Инсталирайте необходимите пакети:
$ pacman -S git go vim mingw-w64-gcc cairo pango pkg-config gtk3
Нуждаем се и от един пакет от AUR
. За да го заредите, добавете този раздел в /etc/pacman.conf:
$ vim /etc/pacman.conf
[ownstuff]
SigLevel = Never
Server = http://martchus.no-ip.biz/repo/arch/$repo/os/$arch
След това инсталирайте пакета:
$ pacman -S mingw-w64-gtk3
Отделно от това, последната версия на Golang вече включва модули Go. Ако по някаква причина те не се използват във вашия проект, ще трябва да започнете да ги използвате. По-добре е да конфигурирате модулите и зависимостите на проекта на вашата работна система и да проверите дали всичко е изградено правилно за Linux. Версията gotk3 трябва да се вземе от главния
клон, защото по-старите версии не са изградени с тази версия на езика:
$ got get github.com/gotk3/gotk3 master
След това отидете в папката на проекта и изпълнете командата за изграждане:
$ 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
Изграждането може да отнеме доста време, но след като приключи, ще видите готовия файл в папката на проекта.
Когато инсталацията приключи, потребителят ще види готовия файл в папката на проекта:
За да избегнете повтарянето на едни и същи стъпки всеки път, използвайте специален файл на 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
Възможно е да се наложи да се справите с него и да направите промени, за да работи.
Трябва да създадете отделна директория, да поставите този файл в нея и да го изпълните:
$ docker build
След изпълнение на командата ще се появи идентификаторът на новия контейнер:
След това можете да стартирате контейнера въз основа на получения образ с командата:
$ docker run -it --rm -v ~/go/src/KeywordsMixer/:/project 028451c45c15 bash
С това инструкцията е завършена.