go交叉編譯sqlite報錯問題解決分析
go sqlite交叉編譯
最近服務(wù)端用到了sqlite,因為服務(wù)端用go進行編寫的,在移植完go-sqlite3也編寫完程序調(diào)試好后,要移植到服務(wù)器上,碰巧的是調(diào)試機用的mac os,而服務(wù)器的系統(tǒng)用的ubuntu,在移植過程中碰到的主要問題就是go用到的sqlite如何跨平臺。
編譯問題報錯
go的跨平臺編譯一直做的都非常不錯,之前我用go開發(fā)的程序在mac上都非常順利的編譯出amd64,mips等平臺的可執(zhí)行程序,部署也非常方便,而go-sqlite3是支持database/sql接口,那么基于cgo的問題也就有了,在默認情況下cgo是不允許交叉編譯的,有用docker解決這個問題的(感覺大材小用),但在社區(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(默認該值是0,因為要編譯cgo所以配置為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
通過,將可執(zhí)行程序直接扔到服務(wù)器,完美運行。
以上就是go交叉編譯sqlite報錯問題解決分析的詳細內(nèi)容,更多關(guān)于go sqlite交叉編譯報錯的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
利用 Go 語言編寫一個簡單的 WebSocket 推送服務(wù)
這篇文章主要介紹了利用 Go 語言編寫一個簡單的 WebSocket 推送服務(wù),需要的朋友可以參考下2018-04-04