[英]Cross Compiling Go
你需要做的是重建linux-amd64的庫和運行時。 你可以這樣做:
which go
可能會有所幫助 - 二進制文件通常與其他源安裝)。 cd
進入src
目錄 GOOS=linux GOARCH=amd64 ./make.bash --no-clean
(或GOOS=linux GOARCH=amd64 bash make.bash --no-clean
如果make.bash
不可執行)。 這將使用指定的操作系統和體系結構重建庫和運行時。 完成此操作后,您可以使用GOOS=linux GOARCH=amd64 go build
為此體系結構構建一個go包或二進制文件。 您可以按照其他體系結構和操作系統的相同說明進行操作。
作為圍棋1.5,交叉編譯要容易得多 。 由於運行時是用Go編寫的,因此無需進行任何設置即可進行交叉編譯。 你現在可以從vanilla Go安裝運行GOOS=<os> GOARCH=<arch> go build
,它會起作用。
但是,有一個例外。 如果您正在使用cgo,您仍需要提前設置內容。 並且您需要通過將CGO_ENABLED
環境變量設置為1
來通知工具您要啟用cgo交叉編譯。 所以,准確地說:
cd
進入Go安裝的src
目錄(參見上面的說明)。 CGO_ENABLED=1 GOOS=<os> GOARCH=<arch> ./make.bash --no-clean
CGO_ENABLED=1 go build
以構建項目。 即使在編譯時,指定CGO_ENABLED=1
也很重要。 按照上面的回答https://stackoverflow.com/a/27413148/3675575 ,我需要設置GOROOT_BOOTSTRAP
來重新編譯我的GO源代碼樹:
GOROOT_BOOTSTRAP=/usr/lib/golang/ CGO_ENABLED=1 GOOS=linux GOARCH=386 ./make.bash --no-clean
(我使用的是Fedora 23,因此操作系統中的GOROOT_BOOTSTRAP可能會有所不同)
你必須cd %goroot%/src/,find make.bash
然后執行./make.bash
執行你的命令。 試試吧!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.