Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
go install创建目录os_arch-选择不同的输出目录_Go - Fatal编程技术网

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