go交叉编译sqlite报错问题解决分析
go sqlite交叉编译
最近服务端用到了sqlite,因为服务端用go进行编写的,在移植完go-sqlite3也编写完程序调试好后,要移植到服务器上,碰巧的是调试机用的mac os,而服务器的系统用的ubuntu,在移植过程中碰到的主要问题就是go用到的sqlite如何跨平台。
编译问题报错

go的跨平台编译一直做的都非常不错,之前我用go开发的程序在mac上都非常顺利的编译出amd64,mips等平台的可执行程序,部署也非常方便,而go-sqlite3是支持database/sql接口,那么基于cgo的问题也就有了,在默认情况下cgo是不允许交叉编译的,有用docker解决这个问题的(感觉大材小用),但在社区中找到一种很棒的方法。
交叉编译go环境变量组合
$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配置交叉编译环境
export CGO_ENABLED=1(默认该值是0,因为要编译cgo所以配置为1)
export GOOS=linux
export GOARCH=amd64- 2,Mac上安装
linux的交叉编译器
交叉编译器下载:https://github.com/karalabe/xgo
- 3,配置交叉编译器环境变量
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

通过,将可执行程序直接扔到服务器,完美运行。
以上就是go交叉编译sqlite报错问题解决分析的详细内容,更多关于go sqlite交叉编译报错的资料请关注脚本之家其它相关文章!
相关文章
搭建Go语言的ORM框架Gorm的具体步骤(从Java到go)
很多朋友不知道如何使用Goland软件,搭建一个ORM框架GORM,今天小编给大家分享一篇教程关于搭建Go语言的ORM框架Gorm的具体步骤(从Java到go),感兴趣的朋友跟随小编一起学习下吧2022-09-09
Go切片导致rand.Shuffle产生重复数据的原因与解决方案
在 Go 语言的实际开发中,切片(slice)是一种非常灵活的数据结构,然而,由于其底层数据共享的特性,在某些情况下可能会导致意想不到的 Bug,本文将详细分析 rand.Shuffle 之后,切片中的数据出现重复的问题,探讨其根本原因,并给出最佳解决方案,需要的朋友可以参考下2025-02-02


最新评论