我是靠谱客的博主 美好黑夜,最近开发中收集的这篇文章主要介绍Golang: CGo - 交叉编译,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1. panic: Binary was compiled with 'CGO_ENABLED=0', go-sqlite3 requires cgo to work. This is a stub [recovered]
        panic: Binary was compiled with 'CGO_ENABLED=0', go-sqlite3 requires cgo to work. This is a stub

交叉编译的文件放到arm架构linux系统的平台上运行, 发现无法进行

原因: 有些go 包 是包装了c/c++源码的, 需要使用不同gcc/g++编译器, 否则会报如上错误

解决方法: 

    windows 安装 mingw32、mingw64 - 此博客可借鉴 https://blog.csdn.net/halo_hsuh/article/details/106450423

    linux 平台自身带gcc 和 g++ 只要系统环境访问到即可

    使用交叉编译的话 自行编译

2.  gcc: error: unrecognized command line option '-marm'; did you mean '-mabm'?

1中仍然无法解决对应问题,那实际问题就是, 需要配置对应编译平台的gcc/g++了, 注意32bit、64bit

解决方案: 本例编译为 在 windows下交叉编译arm-linux 程序 

GOOS=linux;GOARCH=arm;CGO_ENABLED=1;CC=D:ProgramPathgcc-6.3.1_arm-linux-gnueabihfbinarm-linux-gnueabihf-gcc;CXX=D:ProgramPathgcc-6.3.1_arm-linux-gnueabihfbinarm-linux-gnueabihf-g++;

GOOS=linux; // 编译平台的系统

GOARCH=arm; // 编译平台架构

CGO_ENABLED=1; // 是否使能CGO

CC=D:ProgramPathgcc-6.3.1_arm-linux-gnueabihfbinarm-linux-gnueabihf-gcc; // 配置gcc 

CXX=D:ProgramPathgcc-6.3.1_arm-linux-gnueabihfbinarm-linux-gnueabihf-g++; // 配置g++

最后

以上就是美好黑夜为你收集整理的Golang: CGo - 交叉编译的全部内容,希望文章能够帮你解决Golang: CGo - 交叉编译所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部