CygwinでGoogle go(golang)を動かす。(コンパイル失敗)

めずらしく風邪をひいてしまったのと年末ごたごたしていて、しばらくぶりのBlogになってしまいました。


さて、少し前に試してみたGoogle goだけど、Windows環境ではコンパイルが通らない状況だった。


Plan9がらみでGoogle goについて調べてみるとCygwin向けのGoogle goポーテイングがあったのでどこまで動くか、試してみた。


参考:
Google Code Archive - Long-term storage for Google Code Project Hosting.

  • 環境
  • 途中で必要になったパッケージ
  • 以下手順
$ mkdir ~go/
$ export GOROOT=~/go/golang-on-cygwin
$ export GOARCH=386
$ export GOOS=linux
$ export GOBIN=/usr/local/bin
$ export PATH=$PATH:$GOBIN
$ hg clone https://golang-on-cygwin.googlecode.com/hg/ golang-on-cygwin 
$ cd golang-on-cygwin/src
$ ./make.bash

残念ながら、コンパイルで失敗してしまう。ひとつずつ片付けていく。


ちょっとアクロバットだが、上記のビルド開始後、別ウインドウでディレクトリ作成を実施。

$ cd ~/go/golang-on-cygwin
$ mkdir -p pkg/Linux_386

さらにファイル"src\libcgo\386.S"にパッチ。

.globl EXT(crosscall_386)
EXT(crosscall_386:)

をこんな感じに直す。

.globl EXT(_crosscall_386)
EXT(_crosscall_386:)

これで、コマンドの8gや8lの生成までは進めた。しかし、その後コンパイルしたバイナリーを動かすとエラーとなってしまいさすがに先に進めない。


先に進むにはもうちょっと時間がかかりそう。今日はここまで。

$ ./8.out
./8.out: ./8.out: cannot execute binary file