Gotk3 кітапханасы дегеніміз не? Ең алдымен, бұл GoLang бағдарламалау тілі үшін Linux-та танымал GTK3 графикалық қолданбаларды жасау құралына арналған байлаулар жиынтығы. Linux жүйесінде кез келген нәрсені қатесіз құрастыруға болады. Дегенмен, Голанг бағдарламалары кросс-платформа болып табылады, олар Windows үшін де құрастырылуы мүмкін, сондықтан пайдаланушыда кейбір қиындықтар болуы мүмкін.
Мәселе мынада, Ubuntu компиляция кезінде қателерге толы. Ең жиі кездесетін қателердің бірі 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 кескінінде pacman жұмысына кедергі келтіретін glibc ақаулығы бар. Мұны түзету үшін келесі пәрменді іске қосыңыз:
$ 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" Сондай-ақ кейде кілттермен проблемалар туындайды. Бұл жұмыс істейтін жүйе емес, сондықтан әр уақытта бұл мәселенің шешімін іздеудің қажеті болмас үшін пакетті тексеруді өшіру керек. Бұл қалай жасалады? Ол үшін /etc/pacman.conf файлының [options] бөлімінде 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 нұсқасы 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Бұл нұсқауларды аяқтайды.