go install创建目录os_arch - 选择不同的输出目录

时间:2014-11-28 10:49:11

标签: 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时,我在目录fib中得到一个名为bin的文件(这是我所期望的):

$ tree bin/
bin/
└── fib

但是当我设置GOOSGOARCH时,会创建GOOS_GOARCH形式的目录:

$ GOARCH=386 GOOS=windows go install fib/fib
$ tree bin/
bin/
└── windows_386
    └── fib.exe

这不是我想要的。我希望文件fib.exe位于bin目录中,而不是位于子目录bin/windows_386中。

(怎么样)这可能吗?

2 个答案:

答案 0 :(得分:5)

这似乎不可能,如issue 6201所示。

  

GOARCH设置要构建的二进制类型   您可能正在交叉编译:{{1​​}}可能是手臂   您绝对不希望在GOARCH系统上运行arm工具   主机系统类型为x86

     

安装需要使用的api工具(或任何工具)

GOHOSTARCH
  

然后普通的'GOARCH=$(go env GOHOSTARCH) go install .../api '会找到它们。

在任何情况下(go toolGOARCH),GOHOSTARCH命令都会安装在您无法更改的固定位置。

答案 1 :(得分:1)

短语"我(不要)"与go工具不兼容; go工具的工作原理。你可以a)用go工具安装文件后将文件复制到你想要的位置,或者b)自己编译文件,例如:通过手动调用6g(这里可以指定输出)。如果您对go工具的工作原理不满意,只需切换到您喜欢的构建工具,例如:普通的旧Makefiles。请注意,go工具也可以帮助您,例如通过go tool 6g

调用编译器