我的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
时,我在目录fib
中得到一个名为bin
的文件(这是我所期望的):
$ tree bin/
bin/
└── fib
但是当我设置GOOS
或GOARCH
时,会创建GOOS_GOARCH
形式的目录:
$ GOARCH=386 GOOS=windows go install fib/fib
$ tree bin/
bin/
└── windows_386
└── fib.exe
这不是我想要的。我希望文件fib.exe
位于bin
目录中,而不是位于子目录bin/windows_386
中。
(怎么样)这可能吗?
答案 0 :(得分:5)
这似乎不可能,如issue 6201所示。
GOARCH
设置要构建的二进制类型 您可能正在交叉编译:{{1}}可能是手臂 您绝对不希望在GOARCH
系统上运行arm
工具 主机系统类型为x86
。安装需要使用的api工具(或任何工具)
GOHOSTARCH
然后普通的'
GOARCH=$(go env GOHOSTARCH) go install .../api
'会找到它们。
在任何情况下(go tool
或GOARCH
),GOHOSTARCH
命令都会安装在您无法更改的固定位置。
答案 1 :(得分:1)
短语"我(不要)"与go工具不兼容; go工具的工作原理。你可以a)用go工具安装文件后将文件复制到你想要的位置,或者b)自己编译文件,例如:通过手动调用6g(这里可以指定输出)。如果您对go工具的工作原理不满意,只需切换到您喜欢的构建工具,例如:普通的旧Makefiles。请注意,go工具也可以帮助您,例如通过go tool 6g