天天看點

golang 交叉編譯 arm64(aarch64)/ amd64

作者:正能量元宇宙編年史

最近在研究使用開源系統內建的物聯網linux 系統,做些事情。

因為以前從未接觸過這塊,是以弄起來磕磕巴巴,不過總算在今天成功了。記錄下心得體會。

使用的子產品是FriendlyWrt。

FriendlyWrt是友善電子基于OpenWrt定制的系統,完全開源,用于企業物聯網二次開發,個人定制NAS,家庭物聯網網關等。           

在釋出的docker 服務後,測試系統可以用,挪到生産機上報錯 exex 錯誤。

後來經過一番查找,發現架構不同,先來看下物聯網系統

先看下平台:

golang 交叉編譯 arm64(aarch64)/ amd64

測試平台(linux 16.04 這個是預設能跑的系統)

golang 交叉編譯 arm64(aarch64)/ amd64

發現平台不同物聯網系統是aarch64,和測試就不同。

不指定平台如何運作。

報錯:

golang 交叉編譯 arm64(aarch64)/ amd64

查找資料後,再編譯前加

#編譯aarch64 或者arm64 加加上這一句 CGO_ENABLE=0 GOOS=linux GOARCH=arm64
CGO_ENABLE=0 GOOS=linux GOARCH=arm64 go build --ldflags "-extldflags -static" -o testdata.bin main.go           

再次運作。成功了。

golang 交叉編譯 arm64(aarch64)/ amd64

這一套搞下來,唉又掉了好多頭發。

golang 交叉編譯 arm64(aarch64)/ amd64