2011-10-16 56 views
2

我正在編寫的軟件將在x86和x86-64體系結構中的Windows,Mac和Linux系統中進行部分廣泛部署。每當我在我的Mac和Linux系統上設置go編譯器時,我只能編譯6g。在Windows上,我只使用預製的實驗二進制文件,它使用8g。如何爲Go編譯8g和6g Go編譯器

當我開始設置構建服務器時,我認爲我還需要構建8g,這樣我才能生成32位構建。如何設置8g,特別是在Mac上(因爲它們可以是x86或x64,具體取決於它們的年齡)?

回答

1

正如另一張海報所說,使用GOARCH。他沒有說的是你不需要多個目錄。

運行all.bash兩次,相同GOROOT

GOARCH=amd64 ./all.bash 
GOARCH=386 ./all.bash 

當你建立的東西與gomake設立GOARCH如果默認不適合你

GOARCH=386 gomake 

可惜goinstall不接受GOARCH還。

請注意,gc編譯器總是交叉編譯。一旦您擁有了所需架構的編譯器,請設置GOOS並在$GOROOT/src/pkg中構建軟件包,那麼您應該能夠構建針對任何操作系統或體系結構的軟件。

GOARCH=386 GOOS=windows gomake 
+0

非常好,那麼像gofix,gofmt這樣的所有「幫手」命令會發生什麼?他們是否用我使用的最後一個GOARCH來構建?所以如果我在x64機器上開發,我可能想先編譯386,然後切換到amd64,這樣我就有兩個編譯器,但我的工具都是64位。 – Nate

+0

是的,每次都會構建幫助工具,所以他們將擁有GOARCH體系結構,如果您想要64位輔助工具,您可能希望先構建386,稍後再構建amd64。 –

+0

注意這個答案是**很**過時。沒有'gomake'或'goinstall'了。 'go build'和'go install'句柄'GOOS'和'GOARCH'就好了,不需要多個目錄(除了'go install'會爲你創建的目錄以外)。 –

3

你必須在all.bash構建腳本來設置環境變量GOARCH386,而不是可能自動選擇amd64。有關詳細信息,請參閱Go文檔中的environment variables

+0

那麼,如果你想要構建/安裝32位和64位二進制文​​件呢?建立他們在不同的目錄,並改變建設之間的變量?我想這會起作用。聽起來像是劇本的好機會。 – Nate