Ödeme Yöntemleri Abuse

Windows için Gotk3 uygulamalarını Linux'a çapraz derleme

22.05.2021, 22:33

Gotk3 kütüphanesi nedir? Öncelikle GoLang programlama dili için Linux'ta popüler bir grafik uygulama oluşturma aracı olan GTK3'ün bir dizi bağlamasıdır. Linux'ta hatasız her şeyi oluşturabilirsiniz. Bununla birlikte, Golang programları çapraz platformdur ve Windows için de oluşturulabilir, bu nedenle kullanıcı bazı zorluklar yaşayabilir.

Sorun, Ubuntu ortamının derleme sırasında bir hata denizi üretmesidir. Sık karşılaşılan hatalardan biri ölümcül hata: libintl.h: Böyle bir dosya ya da dizin yok. Bu, doğru C başlık dosyalarını bulma ile ilgili bir GoLang sorununu gösterir. Ancak bu sorun ArchLinux'ta mevcut değildir.

Gotk3 uygulamalarını çapraz derleme

Çapraz derleme amacıyla, kullanıcıların DockerHub ile ArchLinux kullanmaları önerilir. Bazen hatalar meydana gelir ve imajı indirdikten sonra bunları nasıl düzelteceğinizi göreceksiniz. İlk adım, imajı indirmek ve volume mount kullanarak içinde projenizin bulunduğu bir klasörü monte ederek konteyneri başlatmaktır. Örneğin, /project klasörüne:

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

rm seçeneğini kullanarak, konteynerden çıktıktan sonra silebilirsiniz. Bu, sabit diskte yer açmak için yapılır. En son ArchLinux imajında glibc ile ilgili bir sorun var, bu nedenle pacman çalışmıyor. Düzeltmek için bu komutu çalıştırın:

$ 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"

Bazen anahtarlarla ilgili sorunlar da olabiliyor. Bu çalışan bir sistem değil, bu yüzden paket doğrulamayı devre dışı bırakmalısınız, böylece her seferinde bir çözüm aramak zorunda kalmazsınız. Bu nasıl yapılır. Bunu yapmak için /etc/pacman.conf dosyasının [options] bölümünde SigLevel parametresini Never olarak değiştirin:

$ vim /etc/pacman.conf
[options]
SigLevel = Never

Ardından, paket veritabanını güncelleyin:

$ pacman -Sy

Gerekli paketleri yükleyin:

$ pacman -S git go vim mingw-w64-gcc cairo pango pkg-config gtk3

Ayrıca AUR'dan bir pakete ihtiyacımız var. Yüklemek için bu bölümü /etc/pacman.conf dosyasına ekleyin:

$ vim /etc/pacman.conf
[ownstuff]
SigLevel = Never
Server = http://martchus.no-ip.biz/repo/arch/$repo/os/$arch

Ardından paketi yükleyin:

$ pacman -S mingw-w64-gtk3

Ayrı bir not olarak, Golang'ın en son sürümü zaten Go modüllerini içeriyor. Herhangi bir nedenle projenizde kullanılmıyorlarsa, bunları kullanmaya başlamanız gerekecektir. Projenin modüllerini ve bağımlılıklarını çalışma sisteminizde yapılandırmak ve her şeyin Linux için doğru şekilde oluşturulduğunu kontrol etmek daha iyidir. Gotk3 sürümü ana daldan alınmalıdır, çünkü eski sürümler dilin bu sürümü ile oluşturulmamıştır:

$ got get github.com/gotk3/gotk3 master

Ardından, proje klasörüne gidin ve build komutunu çalıştırın:

$ 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

Derleme oldukça uzun sürebilir, ancak bittikten sonra proje klasöründe bitmiş dosyayı göreceksiniz.

Kurulum tamamlandığında, kullanıcı proje klasöründe bitmiş dosyayı görecektir:

Windows için Gotk3 uygulamalarını Linux'a çapraz derleme

Aynı adımları defalarca tekrarlamaktan kaçınmak için özel bir Docker dosyası kullanın:

$ 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

Çalışmasını sağlamak için onunla uğraşmanız ve değişiklikler yapmanız gerekebilir.

Ayrı bir dizin oluşturmanız, bu dosyayı içine yerleştirmeniz ve çalıştırmanız gerekir:

$ docker build

Komutu çalıştırdıktan sonra, yeni konteynerin kimliği görünecektir:

Windows için Gotk3 uygulamalarını Linux'a çapraz derleme

Daha sonra komut ile elde edilen imajı temel alarak konteyneri başlatabilirsiniz:

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

Bu, talimatı tamamlar.