Шта је библиотека 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
Овим се завршавају упутства.