日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Golang 的跨平台交叉编译浅析

發布時間:2024/4/14 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Golang 的跨平台交叉编译浅析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

什么是跨平臺交叉編譯

交叉編譯

通俗地講就是在一種平臺上編譯出其他幾個平臺能夠運行的程序(通常指系統和CPU架構的不同)

交叉編譯通常使用在分發時,編譯出多個平臺可用的二進制程序,比如在Linux下編譯出可以在Win下可以使用的EXE程序。

本地編譯

本地編譯是指當前系統所配置編譯器根據當前系統配置編譯出在當前系統所適用的執行程序(部分其他語言本地編譯時可能會由于擴展包含的問題,無法在同平臺其他機器運行)。

所以如果要生成在非本機的其他平臺和系統的程序,就需要用到交叉編譯(交叉編譯工具鏈)。

交叉編譯工具鏈

交叉編譯工具鏈是一個由編譯器、連接器和解釋器組成的綜合開發環境,交叉編譯工具鏈主要由binutils、gcc和glibc 3個部分組成。

有時出于減小 libc 庫大小的考慮,也可以用別的 c 庫來代替 glibc,例如 uClibc、dietlibc 和 newlib。

Golang 的跨平臺交叉編譯

Go語言是編譯型語言,可以將程序編譯后在將其拿到其它操作系統中運行,此過程只需要在編譯時增加對其它系統的支持。

交叉編譯依賴下面幾個環境變量

  • GOARCH 目標平臺(編譯后的目標平臺)的處理器架構(386、amd64、arm)
  • GOOS 目標平臺(編譯后的目標平臺)的操作系統(darwin、freebsd、linux、windows)

各平臺的GOOS和GOARCH支持情況

GOOSGOARCHOS version
linux386 / amd64 / arm>= Linux 2.6
darwin386 / amd64OS X (Snow Leopard + Lion)
freebsd386 / amd64>= FreeBSD 7
windows386 / amd64>= Windows 2000

Golang交叉編譯步驟(可跳過)

首先進入$GOROOT/go/src 源碼所在目錄,執行如下命令創建目標平臺所需的包和工具文件

# 如果你想在Windows 32位系統下運行 cd $GOROOT/src CGO_ENABLED=0 GOOS=windows GOARCH=386 ./make.bash # 如果你想在Windows 64位系統下運行 cd $GOROOT/src CGO_ENABLED=0 GOOS=windows GOARCH=amd64 ./make.bash# 如果你想在Linux 32位系統下運行 cd $GOROOT/src CGO_ENABLED=0 GOOS=linux GOARCH=386 ./make.bash # 如果你想在Linux 64位系統下運行 cd $GOROOT/src CGO_ENABLED=0 GOOS=linux GOARCH=amd64 ./make.bash

交叉編譯當前項目

# 如果你想在Windows 32位系統下運行 CGO_ENABLED=0 GOOS=windows GOARCH=386 go build test.go # 如果你想在Windows 64位系統下運行 CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build test.go# 如果你想在Linux 32位系統下運行 CGO_ENABLED=0 GOOS=linux GOARCH=386 go build test.go # 如果你想在Linux 64位系統下運行 CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build test.go

上面命令中的 CGO_ENABLED = 0 表示設置CGO工具不可用; GOOS 表示程序構建環境的目標操作系統(Linux、Windows); GOARCH 表示程序構建環境的目標計算架構(32位、64位);

現在你可以在相關目標操作系統上運行編譯后的程序了。

鏈接

關于于 Go 的跨平臺交叉編譯淺析 交叉編譯

轉載于:https://my.oschina.net/dingdayu/blog/1583815

總結

以上是生活随笔為你收集整理的Golang 的跨平台交叉编译浅析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。