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
Бұл нұсқауларды аяқтайды.