开始在我的所有go项目上收到pack: cannot open
错误。
尝试运行一个简单的go文件:
main.go:
package main
import "fmt"
func main() {
fmt.Println("Hello, playground")
}
得到了同样的结果:
$ go run main.go
# command-line-arguments
pack: cannot open $WORK/command-line-arguments/_obj/_go_.6
我确实在目录中有一个名为mplete
的新文件,它似乎是6g编译器的输出。
手动运行go run -x main.go
的步骤输出,我发现6g编译器正在接受标志-complete
,并将其读取为-o mplete
。将输出文件设置为meplete
$ ls
main.go work_tmp
$ /usr/local/go/pkg/tool/linux_amd64/6g -o $WORK/command-line-arguments/_obj/_go_.6 -p command-line-arguments -complete -D _/tmp/taco -I $WORK ./main.go
$ ls
main.go mplete work_tmp
更改-complete
标志会更改输出的文件:
$ ls
main.go work_tmp
$ /usr/local/go/pkg/tool/linux_amd64/6g -o $WORK/command-line-arguments/_obj/_go_.6 -p command-line-arguments -cotaco -D _/tmp/taco -I $WORK ./main.go
$ ls
main.go taco work_tmp
我的go evn
GOARCH="amd64"
GOBIN=""
GOCHAR="6"
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/home/jpoz/go"
GORACE=""
GOROOT="/usr/local/go"
GOTOOLDIR="/usr/local/go/pkg/tool/linux_amd64"
CC="gcc"
GOGCCFLAGS="-g -O2 -fPIC -m64 -pthread"
CGO_ENABLED="1"
发布于 2013-10-31 05:53:43
想明白了!
我的机器上安装了两个版本的go:
/usr/local/go
中的go1.0.3和/usr/local/bin/go
中的go1.1.1
which go
将使用go1.1.1,但由于GOROOT设置为/usr/local/go
,因此构建使用的是旧版 6g编译器!!
https://stackoverflow.com/questions/19693832
复制相似问题