猿问

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

我的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

但是当我设置GOOSor 时GOARCH,GOOS_GOARCH会创建表单中的目录:


$ GOARCH=386 GOOS=windows go install fib/fib

$ tree bin/

bin/

└── windows_386

    └── fib.exe

这不是我想要的。我想将文件fib.exe放在bin目录中,而不是在子目录中bin/windows_386。


(这怎么可能?


当年话下
浏览 223回答 2
2回答

慕仙森

这似乎不可能,如issue 6201 所示。GOARCH设置要构建的二进制文件的类型。您可能正在交叉编译:GOARCH可能是 arm。您绝对不想arm在x86系统上运行该工具。主机系统类型是GOHOSTARCH.要安装您需要使用的 api 工具(或任何工具)GOARCH=$(go env GOHOSTARCH) go install .../api然后简单的 ' go tool' 会找到它们。在任何情况下(GOARCH或GOHOSTARCH),该go命令都将安装在您无法更改的固定位置。

叮当猫咪

短语“我(不)想要”与 go 工具不兼容;go 工具是如何工作的。您可以 a) 在使用 go 工具安装文件后将文件复制到您想要的位置,或者 b) 自己编译它,例如通过手动调用 6g(在这里您可以指定输出)。如果您对 go 工具的工作方式不满意,只需切换到您喜欢的构建工具,例如普通的旧 Makefile。请注意,go 工具也可以帮助您,例如通过调用编译器go tool 6g
随时随地看视频慕课网APP

相关分类

Go
我要回答