首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >6g将完成标志视为输出标志,导致"pack: cannot open“错误

6g将完成标志视为输出标志,导致"pack: cannot open“错误
EN

Stack Overflow用户
提问于 2013-10-31 05:08:33
回答 1查看 234关注 0票数 0

开始在我的所有go项目上收到pack: cannot open错误。

尝试运行一个简单的go文件:

main.go:

代码语言:javascript
运行
复制
package main

import "fmt"

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

得到了同样的结果:

代码语言:javascript
运行
复制
$ 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

代码语言:javascript
运行
复制
$ 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标志会更改输出的文件:

代码语言:javascript
运行
复制
$ 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

代码语言:javascript
运行
复制
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"
EN

回答 1

Stack Overflow用户

发布于 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编译器!!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19693832

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档