Начини плаћања Abuse

Унакрсно компајлирање Gotk3 Windows апликација на Linux-у

22.05.2021, 22:33

Шта је библиотека Gotk3? Пре свега, то је скуп повезивања за алат за креирање графичких апликација GTK3, популаран у Линуксу за програмски језик GoLang. У Линуксу можете направити било шта без грешака. Међутим, GoLang програми су крос-платформски, могу се направити и за Виндоус, тако да корисник може имати извесних потешкоћа.

Проблем је што је Убунту пун грешака током компајлирања. Једна од најчешћих грешака fatal error: libintl.h: No such file or directory . То указује да GoLang има проблем са проналажењем потребних C заглавних датотека. Али ArchLinux нема овај проблем.

Унакрсно компајлирање Gotk3 апликација

За потребе унакрсне компилације, корисницима се препоручује да користе 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

Изградња може потрајати доста дуго, али када се заврши, видећете готову датотеку у фолдеру пројекта.

Након завршетка инсталације, корисник ће видети завршену датотеку у фолдеру пројекта:

Унакрсно компајлирање Gotk3 Windows апликација на Linux-у

Да бисте избегли понављање истих радњи изнова и изнова, користите посебан 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

Након извршавања команде, појавиће се ИД новог контејнера:

Унакрсно компајлирање Gotk3 Windows апликација на Linux-у

Затим можете покренути контејнер на основу резултујуће слике помоћу команде:

$ docker run -it --rm -v ~/go/src/KeywordsMixer/:/project 028451c45c15 bash

Овим се завршавају упутства.