go交叉編譯sqlite報(bào)錯(cuò)問(wèn)題解決分析
go sqlite交叉編譯
最近服務(wù)端用到了sqlite,因?yàn)榉?wù)端用go進(jìn)行編寫(xiě)的,在移植完go-sqlite3也編寫(xiě)完程序調(diào)試好后,要移植到服務(wù)器上,碰巧的是調(diào)試機(jī)用的mac os,而服務(wù)器的系統(tǒng)用的ubuntu,在移植過(guò)程中碰到的主要問(wèn)題就是go用到的sqlite如何跨平臺(tái)。
編譯問(wèn)題報(bào)錯(cuò)
go的跨平臺(tái)編譯一直做的都非常不錯(cuò),之前我用go開(kāi)發(fā)的程序在mac上都非常順利的編譯出amd64,mips等平臺(tái)的可執(zhí)行程序,部署也非常方便,而go-sqlite3是支持database/sql接口,那么基于cgo的問(wèn)題也就有了,在默認(rèn)情況下cgo是不允許交叉編譯的,有用docker解決這個(gè)問(wèn)題的(感覺(jué)大材小用),但在社區(qū)中找到一種很棒的方法。
交叉編譯go環(huán)境變量組合
$GOOS $GOARCH android arm darwin 386 darwin amd64 darwin arm darwin arm64 dragonfly amd64 freebsd 386 freebsd amd64 freebsd arm linux 386 linux amd64 linux arm linux arm64 linux ppc64 linux ppc64le linux mips linux mipsle linux mips64 linux mips64le netbsd 386 netbsd amd64 netbsd arm openbsd 386 openbsd amd64 openbsd arm plan9 386 plan9 amd64 solaris amd64 windows 386 windows amd64
go-sqlite的交叉編譯分析
- 1,在mac配置交叉編譯環(huán)境
export CGO_ENABLED=1(默認(rèn)該值是0,因?yàn)橐幾gcgo所以配置為1) export GOOS=linux export GOARCH=amd64
- 2,Mac上安裝
linux的交叉編譯器
交叉編譯器下載:https://github.com/karalabe/xgo
- 3,配置交叉編譯器環(huán)境變量
export CC=/usr/local/gcc-4.8.1-for-linux64/bin/x86_64-pc-linux-gcc
- 4,編譯
CC=/usr/local/gcc-4.8.1-for-linux64/bin/x86_64-pc-linux-gcc CGO_ENABLED=1 GOARCH=amd64 GOOS=linux go build main.go
通過(guò),將可執(zhí)行程序直接扔到服務(wù)器,完美運(yùn)行。
以上就是go交叉編譯sqlite報(bào)錯(cuò)問(wèn)題解決分析的詳細(xì)內(nèi)容,更多關(guān)于go sqlite交叉編譯報(bào)錯(cuò)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
go-zero源碼閱讀之布隆過(guò)濾器實(shí)現(xiàn)代碼
布隆過(guò)濾器可以用于檢索一個(gè)元素是否在一個(gè)集合中。它的優(yōu)點(diǎn)是空間效率和查詢時(shí)間都比一般的算法要好的多,缺點(diǎn)是有一定的誤識(shí)別率和刪除困難,這篇文章主要介紹了go-zero源碼閱讀-布隆過(guò)濾器,需要的朋友可以參考下2023-02-02利用 Go 語(yǔ)言編寫(xiě)一個(gè)簡(jiǎn)單的 WebSocket 推送服務(wù)
這篇文章主要介紹了利用 Go 語(yǔ)言編寫(xiě)一個(gè)簡(jiǎn)單的 WebSocket 推送服務(wù),需要的朋友可以參考下2018-04-04Go語(yǔ)言基礎(chǔ)if條件語(yǔ)句用法及示例詳解
這篇文章主要為大家介紹了Go語(yǔ)言基礎(chǔ)if條件語(yǔ)句的用法及示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪2021-11-11