#! /bin/blog

実行形式のブログです。というか、ほぼポエムです。

ARM5環境向けプログラムにGolangを使ってみた

C言語も道半ばなのですが、そもそもC言語をやりたかったから、

勉強していたわけではないということを、ここに明記しておきたいです。

以前、JQueryすら、まともに使ったことがない、いわば素人が、

背伸びして、CoffeeScriptを使った時に、思ったのです。

Javascript知らないとダメだーって。

なんだかんだ、GolangとかDlangがつかいたくて、そのためには、やっぱC言語の知識は必要。

遠回りこそ、もっとも近道なのが、この世界なのです。

とはいえ、チャンスがあったので、Golangを実案件にぶち込んでやりました。


作ったものは、簡単な、XML処理をするコマンドを3本を作製するというものです。
以下のサイトを参考に1日で、書きました。

Goのencoding/xmlを使いこなす - Qiita

書くこと自体は特に問題はなかったのですが、問題は、動くかどうか、だったんです。

実は、実行環境が、busyboxで、ARM5だったりして、CPUもメモリもストレージも超弱いという。

感想としては、

やばいwなんだろうwwww勘で書けるwwww楽しいwwwwww

すごいwwwクロスコンパイルwwwwシェルなんかいらねぇーwwwwwwwww

です。Golangは賛否両論あるようですが、DevOptsでは、使われていくような確信を得ました。

ということで、

みんなでGolang!!

1. Goをインストール

`--with-cc-all`をつけると全てのコンパイラが入るらしい。

$ brew install go --with-cc-all

2. 環境変数を設定する

.zshrcとかに入れとく。

export GOROOT=/usr/local/opt/go/libexec
export GOPATH="$HOME/go"
export PATH="$GOROOT/bin:$GOPATH/bin:$PATH"


3. コンパイラを設定する

Goの不具合かもしれないが、ARM5を指定しているのに、なぜか、ARM6でコンパイルされてしまうので。

$ cd $GOPATH/src
$ GOOS=linux GOARCH=arm GOARM=5 make.bash

4. コーディング

$ touch hello.go
$ vi hello.go

とりあえず、hello, worldしましょうか。

package main

import "fmt"

func main() {
	fmt.Println("Hello, world")
}

え?エディター?
JetBrainは、pluginあるけど、デバッガが動かなかったね。

良い奴あったら、逆に、教えてください。

5. 実行する

$ go run hello.go

6. 実行形式を生成する

GOOS、GOARCH、GOARMは、今回、実行環境であるARM5を指定します。
GOBINは、生成された実行形式が出力される場所です。

$ GOOS=linux GOARCH=arm GOARM=5 GOBIN=./ go install
広告を非表示にする