哈哈,好激动,又接触到一门强大的语言,简单记录下在mac上运行第一个程序遇到的问题。
Hello Word 示例,pkg安装包: wget https://storage.googleapis.com/golang/go1.2.2.darwin-amd64-osx10.8.pkg,下载后,需要设置环境变量才ok哦,如,我的
bash_profile文件,
GOARCH="386" # 386是来自 uname -p 获取的哦
GOBIN=""
GOCHAR="6"
GOEXE=""
GOHOSTARCH="386" # 386是来自 uname -p 获取的哦
GOHOSTOS="darwin"
GOOS="darwin"
GOPATH=""
GORACE=""
GOROOT="/usr/local/go"
GOTOOLDIR="/usr/local/go/pkg/tool/darwin_amd64"
TERM="dumb"
CC="clang"
GOGCCFLAGS="-g -O2 -fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fno-common"
CXX="clang++"
CGO_ENABLED="1"
source bash_profile即可;如果在build时出现类似下面的错误(go build runtime: darwin/amd64 must be bootstrapped using make.bash),可以尝试如下命令,再次编译:
$ GOOS=darwin GOARCH=amd64 go build -x -o testport_linux hello.go
WORK=/var/folders/vp/f5r3wgld1w133srlbyd4190m0000gn/T/go-build683397936
mkdir -p $WORK/command-line-arguments/_obj/
cd /Users/jake/rdd/golang
/usr/local/go/pkg/tool/darwin_amd64/6g -o $WORK/command-line-arguments/_obj/_go_.6 -p command-line-arguments -complete -D _/Users/jake/rdd/golang -I $WORK ./hello.go
/usr/local/go/pkg/tool/darwin_amd64/pack grcP $WORK $WORK/command-line-arguments.a $WORK/command-line-arguments/_obj/_go_.6
cd .
/usr/local/go/pkg/tool/darwin_amd64/6l -o testport_linux -L $WORK $WORK/command-line-arguments.a
我们发现Go实际上用的是$GOROOT/pkg/tool/linux_amd64下的6g(编译器)和6l(链接器)来完成整个编译过程的,看到6g 和6l所在目录名为linux_amd64,我们可以大胆猜测编译darwin/amd64 go程序应该使用的是$GOROOT/pkg/tool/darwin_amd64下的工具。不过在我在$GOROOT/pkg/tool下没有发现 darwin_amd64目录,也就是说我们通过安装包安装的Go仅自带了for linux_amd64的编译工具,要想交叉编译出for darwin_amd64的程序,我们需要通过make.bash来手工编译出这些工具。
根据make.bash的用法说明,我们来尝试构建一下:
cd $GOROOT/src
sudo GOOS=darwin GOARCH=amd64 ./make.bash
编译后,我们再来试试编译for darwin_amd64的程序:
$ GOOS=darwin GOARCH=amd64 go build -x -o test_darwin hello.go
此时,如果在当前目录生成了test_darwin文件,那就执行,看下久违的hello world。那就修改环境变量:
$ export GOARCH=amd64
有疑问加站长微信联系(非本文作者)