Golang

关注公众号 jb51net

关闭
首页 > 脚本专栏 > Golang > go sqlite交叉编译报错

go交叉编译sqlite报错问题解决分析

作者:代码界影帝 囧囧妹

这篇文章主要为大家介绍了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的交叉编译分析

      export CGO_ENABLED=1(默认该值是0,因为要编译cgo所以配置为1)
      export GOOS=linux
      export GOARCH=amd64

交叉编译器下载:https://github.com/karalabe/xgo

       export CC=/usr/local/gcc-4.8.1-for-linux64/bin/x86_64-pc-linux-gcc
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交叉编译报错的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:
阅读全文