2014-11-28 2 views
3

У меня есть эта структура папок для моего fib пакета:идут установку создает каталог os_arch - выбрать различные выходной каталог

$ 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

Жаль, что я должен принять один из ответов :) (оба были полезны) – topskip

ответ

5

Это не представляется возможным, как показано в issue 6201.

GOARCH устанавливает тип двоичного кода для сборки.
Возможно, вы выполните кросс-компиляцию: GOARCH может быть рука.
Вы определенно не хотите запускать инструмент arm на системе x86.
Тип хост-системы: GOHOSTARCH.

Чтобы установить инструмент API (или каких-либо инструментов), вы должны использовать

GOARCH=$(go env GOHOSTARCH) go install .../api 

, а затем просто '' go tool найдет их.

В любом случае (GOARCH или GOHOSTARCH), команда go будет установить в определенном месте, что вы не можете изменить.

1

Фраза «Я (не хочу) хочу» несовместима с инструментом go; инструмент go работает, как он работает. Вы можете: a) скопировать файл туда, где вы хотите, после его установки с помощью инструмента go или b) скомпилировать его самостоятельно, например. путем вызова 6g вручную (здесь вы можете указать выход). Если вы недовольны тем, как работает инструмент go, просто переключитесь на инструмент сборки по своему вкусу, например. простой старый Makefiles. Обратите внимание, что инструмент go помогает вам там, например. путем вызова компилятора с помощью go tool 6g

Смежные вопросы