我正在尝试编译此示例(保存为main.go当前工作目录):
package main
import (
"flag"
"log"
"runtime"
"github.com/nats-io/go-nats"
)
// rest of the code
Run Code Online (Sandbox Code Playgroud)
这有效:
$ go build ./
Run Code Online (Sandbox Code Playgroud)
但这不是:
$ go tool compile -o main.o main.go
main.go:8:2: can't find import: "github.com/nats-io/go-nats"
Run Code Online (Sandbox Code Playgroud)
上面的两个例子都是在具有相同环境变量的同一个终端上运行的,所以我不明白为什么第二个不起作用.我已尝试-D和-I各种目录的参数$GOPATH,$GOPATH/src等等,但没有成功.
我知道不使用go tool compile等等的最佳做法是什么,但我的目标是将我的go源添加到现有的C++ makefile项目中,并且使用go tool它将使其更加一致.
正确的语法goo tool compile如下:
$ go tool compile -I $GOPATH/pkg/linux_amd64 -o main.o main.go
Run Code Online (Sandbox Code Playgroud)
问题是默认情况下compile只执行查找GOROOT和忽略GOPATH.