Tuesday, September 15, 2015

Cross Compilation using Go

Masih seputar Go Programming, dimana pembahasan kali ini berkaitan dengan cross compile. Sebelum apa sih cross compile itu ?
Cross compile adalah kemampuan compiler untuk meng-compile di platform tertentu, tetapi proses pengerjaannya di platform yang berbeda. Contoh: kita bikin program di OS X lalu kita compile untuk jalan di Windows. Itu lah cross compile.

Kasus yang akan kita coba kurang lebih sama, yaitu membuat program di OS X dan di jalankan di windows dengan menggunakan bahasa pemrograman golang.
  • OS X disini kita sebut sebagai Host OS (developing on).
  • Windows kita sebut sebagai Target OS (running on).

Sebelum kita mulai ada beberapa istilah di environment golang yang harus kita pahami dulu, yaitu :
  • $GOHOSTARCH : Architecture processor yang di pake untuk develop. Dalam hal ini amd64 (64 bit).
  • $GOHOSTOS : Operating system yang di pake untuk develop. Dalam hal ini darwin (OS X).
  • $GOARCH : Architecture processor yang digunakan untuk menjalankan program. Dalam hal ini amd64 (64 bit).
  • $GOOS : Operating system yang digunakan untuk menjalankan program. Dalam hal ini windows.

Berikut contoh environment di OS X :
go env
Disitu terlihat sama antara $GOHOSTARCH dan $GOARCH begitu juga sebaliknya antara $GOHOSTOS dan $GOOS.

Untuk itu kita harus menyesuaikan $GOARCH dan $GOOS menjadi :
  • amd64 untuk $GOARCH
  • windows untuk $GOOS
Caranya adalah sebagai berikut :
  • Masuk ke directory source code go
$ cd /usr/local/go/src
  • Jalankan perintah berikut.
$ sudo GOOS=windows ./make.bash
Sekarang saatnya bikin program sederhana untuk di jalankan di windows. Berikut snapshoot programnya :
package main

import "fmt"
import "runtime"

func main() {
        fmt.Printf("Hello %s/%s\n", runtime.GOOS, runtime.GOARCH)
}

Setelah itu kita compile untuk jalan di mesin windows dengan cara sebagai berikut
$ env GOOS=windows GOARCH=amd64 go build -o hello_amd64.exe hello.go
Hasilnya setelah kita jalan seperti ini
windows

OS X

Wow... begitu mudahnya melakukan cross compile dengan golang. Cukup membuat satu program dan bisa kita compile di beberapa platform seperti OS X, Linux ataupun Windows.

Untuk sementara sekian dulu dari kami, nantikan posting-posting kami selanjutnya berkaitan dengan golang.

No comments:

Post a Comment