CodeBlanks Logo Icon CodeBlanks

Go compiler

Go derleyicisinin aşamalarını öğrenirsin.

Go derleyicisi

go build arka planda cmd/compile derleyicisini çalıştırır. Aşamalar: ayrıştırma (kaynak → sözdizimi ağacı), tür denetimi, IR üretimi ve kaçış analizi, inlining, SSA optimizasyonları, son olarak makine kodu. Ardından cmd/link paketleri tek bir ikiliye bağlar.

go build -x .          # çalıştırılan komutları gösterir
go tool compile -S x.go  # üretilen assembly

Go derleyicisi hızlı derlemeye odaklıdır; büyük projeler bile saniyeler içinde derlenir.

Derleme önbelleği

Go her paketin derleme sonucunu girdilerinin özetine göre önbelleğe alır (go env GOCACHE). Bir dosya değişmediyse paket yeniden derlenmez. go build -a önbelleği yok sayar; go clean -cache temizler. Çapraz derleme için yalnızca GOOS ve GOARCH değişkenlerini ayarlamak yeterlidir.

Uygulama Derleme bilgisi

runtime.Version(), runtime.GOOS ve runtime.GOARCH değerleri programın hangi araç zinciriyle ve hedefle derlendiğini söyler. runtime.Version()'ın "go" ile başladığını strings.HasPrefix ile kontrol edip yazdır.

Başlangıç kodu

main.go
package main

import (
    "fmt"
    "runtime"
    "strings"
)

func main() {
    // buraya yaz
}

Örnek çözüm

main.go
package main

import (
    "fmt"
    "runtime"
    "strings"
)

func main() {
    fmt.Println(strings.HasPrefix(runtime.Version(), "go"))
}

Beklenen çıktı

true

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Paketleri tek bir ikiliye hangi araç birleştirir?

  • cmd/compile
  • go vet
  • gofmt
  • cmd/link (bağlayıcı) Doğru cevap

Açıklama: Derleyici her paketi nesne dosyasına çevirir; bağlayıcı bunları ve çalışma zamanını tek bir çalıştırılabilir dosyada birleştirir.

2 Assembly gör

Soru
go build -gcflags=____ . 2>&1 | head
Cevap
go build -gcflags=-S . 2>&1 | head

Açıklama: -gcflags=-S derleyicinin ürettiği assembly çıktısını yazdırır.

3 Derleme aşaması

Kavram Anlamı
Ayrıştırma Sözdizimi ağacı
Tür denetimi Tür hataları
SSA Optimizasyon
Bağlama Tek ikili

Uzman bölümündeki tüm dersler