交叉编译_Golang交叉编译
Golang支持交叉編譯,可以在一個操作系統生成另一個操作系統的可執行二進制文件。
Mac下編譯 Linux 和 Windows 64位可執行程序:
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.goCGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build main.goLinux下編譯 Mac 和 Windows 64位可執行程序:
CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build main.goCGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build main.goWindows下編譯 Mac 和 Linux 64位可執行程序
SET CGO_ENABLED=0SET GOOS=darwinSET GOARCH=amd64go build main.goSET CGO_ENABLED=0SET GOOS=linuxSET GOARCH=amd64go build main.goGOOS:目標平臺的操作系統(darwin、freebsd、linux、windows)
GOARCH:目標平臺的體系架構(386、amd64、arm)
交叉編譯不支持 CGO 所以要禁用它
上面的命令編譯 64 位可執行程序,你當然應該也會使用 386 編譯 32 位可執行程序。很多博客都提到要先增加對其它平臺的支持,但是我跳過那一步,上面所列的命令也都能成功,且得到我想要的結果,可見那一步應該是非必須的,或是我所使用的 Go 版本已默認支持所有平臺。編譯好的二進制文件不在依賴GOROOT、GOPATH環境變量,可以隨意的跑起來。
在windows平臺編譯好的linux平臺的可執行文件,在linux系統中無法執行并且報錯如下?
./src/kill/backend/fronted/productMain:command?not?found根據報錯可知曉,二進制文件不允許被執行,導致不可被執行的原因有
權限不夠
二進制文件破損
給執行文件賦予權限
chmod 777 file_path幸運的是賦予完權限之后,程序可以正常啟動咯,但是遠程無法訪問,本地curl可以訪問,查看源碼后發現監聽了特殊的IP,導致無法通過域名訪問,正確的綁定格式是:
localhost:80?=> 0.0.0.0:80Golang之路不會一帆風順,為了后期的開發更高效,做好學習筆記是非常重要的,畢竟好記性不如爛筆頭耶!
總結
以上是生活随笔為你收集整理的交叉编译_Golang交叉编译的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python凯撒密码加密写入文件_Pyt
- 下一篇: python和c语言相通吗_python