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

 更新时间:2024年01月31日 11:55:42   作者:代码界影帝 囧囧妹  
这篇文章主要为大家介绍了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交叉编译报错的资料请关注脚本之家其它相关文章!

相关文章

  • 详解Golang语言中的interface

    详解Golang语言中的interface

    这篇文章主要介绍了Golang语言中的interface的相关资料,帮助大家更好的理解和使用golang,感兴趣的朋友可以了解下
    2021-01-01
  • go-zero源码阅读之布隆过滤器实现代码

    go-zero源码阅读之布隆过滤器实现代码

    布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都比一般的算法要好的多,缺点是有一定的误识别率和删除困难,这篇文章主要介绍了go-zero源码阅读-布隆过滤器,需要的朋友可以参考下
    2023-02-02
  • Golang函数这些神操作你知道哪些

    Golang函数这些神操作你知道哪些

    这篇文章主要为大家介绍了一些Golang中函数的神操作,不知道你都知道哪些呢?文中的示例代码讲解详细,具有一定的学习价值,需要的可以参考一下
    2023-02-02
  • 利用 Go 语言编写一个简单的 WebSocket 推送服务

    利用 Go 语言编写一个简单的 WebSocket 推送服务

    这篇文章主要介绍了利用 Go 语言编写一个简单的 WebSocket 推送服务,需要的朋友可以参考下
    2018-04-04
  • golang压缩与解压缩文件的示例代码

    golang压缩与解压缩文件的示例代码

    这篇文章主要给大家介绍了golang压缩与解压缩文件,文中通过代码示例给大家介绍的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2024-02-02
  • GO语言包管理工具go mod以及包详解

    GO语言包管理工具go mod以及包详解

    go mod是go的一个模块管理工具,用来代替传统的GOPATH方案,下面这篇文章主要给大家介绍了关于GO语言包管理工具go mod以及包详解的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-07-07
  • 揭秘Go Json.Unmarshal精度丢失之谜

    揭秘Go Json.Unmarshal精度丢失之谜

    我们知道在json反序列化时是没有整型和浮点型的区别,数字都使用同一种类型,在go语言的类型中这种共同类型就是float64,下面我们就来探讨一下Json.Unmarshal精度丢失之谜吧
    2023-08-08
  • 深入理解go reflect反射慢的原因

    深入理解go reflect反射慢的原因

    我们选择 go 语言的一个重要原因是,它有非常高的性能。但是它反射的性能却一直为人所诟病,本篇文章就来看看 go 反射的性能问题,感兴趣的可以了解一下
    2023-01-01
  • Go语言基础if条件语句用法及示例详解

    Go语言基础if条件语句用法及示例详解

    这篇文章主要为大家介绍了Go语言基础if条件语句的用法及示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步早日升职加薪
    2021-11-11
  • 详解如何在Go服务中做链路追踪

    详解如何在Go服务中做链路追踪

    使用 Go 语言开发微服务的时候,需要追踪每一个请求的访问链路,本文主要介绍了如何在Go 服务中做链路追踪,感兴趣的可以了解一下
    2021-09-09

最新评论