go交叉编译go和cgo混合编写的库

环境:mac os 错误输出: ld: unknown option: --build-id=none clang: error: linker command failed with exit code 1 (use -v to see invocation)

编译命令: CGO_ENABLED=1 GOOS=linux GOARCH=amd64 go build

编译错误的库: iconv-go

已邀请:

willian - 90后

赞同来自:

本人小白 不是c系程序员 对c的生态不熟悉 terminal输入clang是有输出的

voidint - https://github.com/voidint

赞同来自:

我遇到过相同的问题,最终的办法是——寻找一个纯go实现的去替换。

codinghxl

赞同来自:

好像可以用docker解决,但是我mac,安装docker也出问题了,好像是网络被墙了,哎

linkerlin

赞同来自:

为何要用CGO,能不用就不要用。

plain

赞同来自:

go能交叉编译,clang不能交叉编译。

zengming00 - 野生程序猿

赞同来自:

交叉编译需要相应平台的c编译器,我这个项目 https://github.com/zengming00/go-server-js 有编译mips cpu的代码,可以参考下面的内容


// go-sqlite3在win32下的问题
// https://github.com/mattn/go-sqlite3/issues/358
// 需要安装 TDM-GCC 并 set CGO_ENABLED = 1

// 编译mips
// apt-get install gcc-arm-linux-gnu
// apt-get install g++-arm-linux-gnu
// CGO_ENABLED=1 GOOS=linux GOARCH=mips CC=mips-linux-gnu-gcc CXX=mips-linux-gnu-g++ go build -v  -ldflags "-linkmode external -extldflags -static"
export CGO_ENABLED=1 
export GOOS=linux
export GOARCH=mips
export CC=mips-linux-gnu-gcc
export CXX=mips-linux-gnu-g++

go env
go build -tags=sqlite3 -v -ldflags "-linkmode external -extldflags -static"

要回复问题请先登录注册