İçeriğe geç

Uygulamaları Derleme ve Yükleme

Go Uygulamalarının Derlenmesi

Go ile yazılan kaynak kodların derlenerek çalışabilir hale gelebilmesi için, go build komutu kullanılır. Bu komut ile birlikte derlenmesini istediğimiz (main.go dosyasının bulunduğu) dizini belirterek derleme işlemini başlatabiliriz.

main.go dosyamız terminalimizin açık olduğu dizinde ise,

Terminal
go build .

farklı bir dizinde ise (örneğin cmd/api/main.go)

Terminal
go build ./cmd/api

Derleme işlemi sonrasında üretilen çalıştırılabilir dosya (binary) varsayılan olarak go module veya main.go’nun bulunduğu dizin isminden ilham alınarak, komutun çalıştırıldığı dizin içerisinde oluşturulacaktır.

Oluşturulan çıktının ismini ve dizinini değiştirmek istersek, -o flag’i kullanılabilir.

Terminal
go build -o ./dist/myapp ./cmd/api

Yukarıdaki komut ile cmd/api dizini içerisindeki main.go derlenip build dizini içerisinde myapp adında çalıştırılabilir dosya üretilecektir.

Derleme detaylarını örmek için -v (verbose) flag’ini kullanabiliriz.

Terminal
go build -v .

Çapraz-Platform Derleme

Çapraz-platform derleme, aynı kaynak kodunu kullanarak farklı işletim sistemleri ve işlemciler için derlenmiş uygulamalar oluşturmayı ifade eder. Go, bu işlemi oldukça basit hale getiren bir dizi özellik sunar.

Go programlama dilinde çapraz-platform derleme, Go’nun en büyük avantajlarından biridir. Bu özelliği kullanarak, Go ile yazılmış bir uygulamayı farklı işletim sistemleri ve işlemciler için derlemek oldukça kolaydır.

Go’nun Çapraz-Platform Derleme Avantajları

  • Kolay Kullanım: Go, platformlara özgü kodları ayırmak veya karmaşık derleme komutları kullanmak zorunda kalmadan çapraz derlemeyi destekler.

  • Derleme Ortamının İzole Edilmesi: Go, farklı platformlar için gereken derleme araçlarını otomatik olarak indirir ve izole eder. Bu, geliştiricilerin farklı platformlarda uygulama geliştirmelerini kolaylaştırır.

  • Kodun Taşınabilirliği: Go ile yazılan kodun taşınabilirliği yüksektir. Aynı kod, farklı platformlarda çalışabilir ve aynı işlevselliği sunar.

Go’da Çapraz-Platform Derleme Nasıl Yapılır?

Go’da çapraz-platform derleme yapmak oldukça basittir. İşte temel adımlar:

GOOS ve GOARCH Değişkenleri: İlk olarak, hedeflediğiniz işletim sistemi ve işlemciyi belirlemeniz gerekir. Bu işlem için GOOS ve GOARCH gibi çevresel (env) değişkenleri ayarlayabilirsiniz. Örneğin, Linux için derlemek istediğinizde GOOS="linux" ve GOARCH="amd64" olarak ayarlanabilir.

Derleme Komutu: Ardından, belirlediğiniz hedefe göre derleme komutunu çalıştırabilirsiniz. Örneğin:

Terminal
GOOS=linux GOARCH=amd64 go build .

Bu komut, Linux üzerinde çalışacak bir uygulamayı derler.

Farklı Platformlar İçin Tekrarlayın: İhtiyacınıza göre farklı işletim sistemleri veya işlemciler için tekrarlayabilirsiniz.

Örnek Bir Senaryo:

Diyelim ki, bir Go uygulamasını Linux, Windows ve macOS için derlemek istiyorsunuz. İşte bunu nasıl yapabilirsiniz:

Terminal
GOOS=linux GOARCH=amd64 go build .
GOOS=windows GOARCH=amd64 go build .
GOOS=darwin GOARCH=amd64 go build .

Bu komutlar, her hedef için uygulamanın derlenmesini sağlar.

Go’nun çapraz-platform derleme yetenekleri sayesinde, yazdığınız uygulamaları farklı işletim sistemleri ve işlemciler için hızlı ve kolay bir şekilde derleyebilirsiniz. Bu özellik, uygulamalarınızın daha geniş bir kullanıcı kitlesi tarafından kullanılmasını sağlar ve geliştirme sürecini daha verimli hale getirir.

Go’nun Desteklediği Tüm Derleme Hedefleri

Derleyicinin versiyonuna göre desteklediği derleme hedefleri değişebileceği için en iyi kaynağı aşağıdaki komutu çalıştırarak edinebiliriz.

Terminal
go tool dist list

Bu yazının yazıldığı tarihteki haline (go1.21.3) bakacak olursak aşağıdaki tablodan görebilirsiniz.

*Liste harf sırasına göre sıralanmıştır

GOOSGOARCH
aixppc64
android386
androidamd64
androidarm
androidarm64
darwinamd64
darwinarm64
dragonflyamd64
freebsd36
freebsdamd64
freebsdarm
freebsdarm64
freebsdriscv64
illumosamd64
iosamd64
iosarm64
jswasm
linux386
linuxamd64
linuxarm
linuxarm64
linuxloong64
linuxmips
linuxmips64
linuxmips64le
linuxmipsle
linuxppc64
linuxppc64le
linuxriscv64
linuxs390x
netbsd386
netbsdamd64
netbsdarm
netbsdarm64
openbsd386
openbsdamd64
openbsdarm
openbsdarm64
plan9386
plan9amd64
plan9arm
solarisamd64
wasip1wasm
windows386
windowsamd64
windowsarm
windowsarm64

Go Uygulamalarının Yüklenmesi

Go ile yazılarak oluşturulmuş projelerin derlenerek sisteme yüklenmesini kolaylaştırmak için go install komutunu kullanabiliriz. Bu komut Go projesini derler ve üretilen çalıştırılabilir dosyayı $GOPATH/bin klasörü içerisine taşır. Böylece terminal üzerinden sistem genelinde, derlenmiş olan Go uygulamasını kullanabiliriz.

Tabi ki bir ayrıntının farkında olmamız gerekir. $GOPATH/bin dizinini Windows’ta ortam değişkenlerine, Unix-benzeri işletim sistemlerinde PATH’e eklemeliyiz.

GOPATH çoğu durumda varsayılan olarak kullanıcı dizinimizin içerisindeki go dizini olur. Bu dizinin içerisindeki bin dizinini PATH veya ortam değişkeni olarak eklemeliyiz.

  1. Başlat menüsünden Ortam Değişkenleri’ni aratın.
  2. Sistem veya kullanıcı kapsamında kullanmanıza bağlı olarak Yeni butonuna basın. windows-env-1
  3. Yeni butonuna basarak kullanıcı dizininizdeki go\bin dizinini girin. windows-env-2

Yukarıdaki adımları tamamladıktan sonra go install komutu ile yüklediğimiz Go uygulamlarını terminalimizden çalıştırabilir hale geleceğiz.

Geliştirmiş olduğumuz projeyi yüklemek için aşağıdaki şekilde kullanabiliriz.

Terminal
go install .

veya main.go dosyamız farklı bir dizinde ise,

Terminal
go install ./cmd/api

Bir VCS platformu üzerinden uygulama kurulumu yapmak için, örnek olarak,

Terminal
go install github.com/cosmtrek/air@latest

Belirli bir versiyonun kurulmasını istiyorsak,

Terminal
go install github.com/cosmtrek/air@v1.49.0

Yükleme işleminden sonra terminale air komutunu girerek çalıştığını gözlemleyebilirsiniz.