go install创建目录os_arch-选择不同的输出目录
我的go install创建目录os_arch-选择不同的输出目录,go,Go,我的fib包有以下文件夹结构: $ tree . └── src └── fib ├── fib │ └── main.go ├── fib.go └── fib_test.go (main.go在包main,fib(_test).go在包fib) GOPATH设置为$PWD/src,GOBIN设置为$PWD/bin。当我运行go install fib/fib时,我在bin目录中得到一个名为fib的文件(这就是我所
fib
包有以下文件夹结构:
$ tree
.
└── src
└── fib
├── fib
│ └── main.go
├── fib.go
└── fib_test.go
(main.go
在包main
,fib(_test).go
在包fib
)
GOPATH设置为$PWD/src
,GOBIN设置为$PWD/bin
。当我运行go install fib/fib
时,我在bin
目录中得到一个名为fib
的文件(这就是我所期望的):
但当我设置GOOS
或GOARCH
时,将创建GOOS\u GOARCH
格式的目录:
$ GOARCH=386 GOOS=windows go install fib/fib
$ tree bin/
bin/
└── windows_386
└── fib.exe
这不是我想要的。我想将文件fib.exe
放在bin
目录中,而不是子目录bin/windows\u 386
中
(如何)这是可能的?短语“我(不)想要”与go工具不兼容;go工具是如何工作的。您可以a)使用go工具安装后将文件复制到您希望的位置,或b)自己编译文件,例如手动调用6g(此处您可以指定输出)。如果您对go工具的工作方式不满意,只需切换到您喜欢的构建工具,例如普通的旧makefile。请注意,go工具在这方面也有帮助,例如,通过似乎不可能的
go tool 6g
调用编译器,如中所示
GOARCH
设置要生成的二进制文件的类型。您可能正在交叉编译:
GOARCH
可能是arm。您肯定不想在
x86
系统上运行arm
工具。主机系统类型为
GOHOSTARCH
要安装api工具(或任何工具),您需要使用
然后普通的“go-tool
”就会找到它们
在任何情况下(
GOARCH
或GOHOSTARCH
),都会将go
命令安装在您无法更改的固定位置。太糟糕了,我不得不接受其中一个答案:)(两者都很有用)
$ GOARCH=386 GOOS=windows go install fib/fib
$ tree bin/
bin/
└── windows_386
└── fib.exe
GOARCH=$(go env GOHOSTARCH) go install .../api