Шта је библиотека Gotk3? Пре свега, то је скуп повезивања за алат за креирање графичких апликација GTK3, популаран у Линуксу за програмски језик GoLang. У Линуксу можете направити било шта без грешака. Међутим, GoLang програми су крос-платформски, могу се направити и за Виндоус, тако да корисник може имати извесних потешкоћа.
Проблем је што је Убунту пун грешака током компајлирања. Једна од најчешћих грешака fatal error: libintl.h: No such file or directory . То указује да GoLang има проблем са проналажењем потребних C заглавних датотека. Али ArchLinux нема овај проблем.
За потребе унакрсне компилације, корисницима се препоручује да користе ArchLinux са DockerHub-ом. Понекад се јављају грешке и након преузимања слике, видећете како да их поправите. Прво, преузмите слику и покрените контејнер, бацајући фасциклу са вашим пројектом у њу користећи монтирање volume . На пример, у фасцикли /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 Вреди посебно напоменути да најновија верзија Голанга већ укључује Го модуле. Ако се из неког разлога не користе у вашем пројекту, мораћете да почнете да их користите. Боље је да конфигуришете модуле и зависности пројекта у вашем оперативном систему и проверите да ли је све исправно изграђено за Линукс. Верзију gotk3 треба узети из master гране, јер старије верзије нису изграђене са овом верзијом језика:
$ 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Изградња може потрајати доста дуго, али када се заврши, видећете готову датотеку у фолдеру пројекта.
Након завршетка инсталације, корисник ће видети завршену датотеку у фолдеру пројекта:

Да бисте избегли понављање истих радњи изнова и изнова, користите посебан Dockerfile:
$ 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Овим се завршавају упутства.