6g将完整标志视为输出标志,导致“pack:无法打开”错误

时间:2013-10-30 21:08:33

标签: 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"

1 个答案:

答案 0 :(得分:1)

想出来了!

我的机器上安装了两个版本的go:

/usr/local/go中的go1.0.3 和 /usr/local/bin/go

中的go1.1.1

which go将使用go1.1.1,但由于GOROOT设置为/usr/local/go,因此构建使用 6g编译器!!