Golang在X86下交叉编译龙芯平台程序报错
go.o: compiled for a big endian system and target is little endian
编译命令:
CGO_ENABLED=1 GOOS=linux GOARCH=mips64 CC=/opt/tool/mips64el-unknown-linux-gnu-gcc go build -o bin/xxx xxx
报错原因:
编译器是给大端字节序的平台用的,而目标平台是个小端字节序。
项目中用到cgo,所以CGO_ENABLE=1,必须要指定CC交叉编译器gcc
此处的gcc使用的是mips64el
(小端字节序),而编译指定的GOARCH=mips64
(大端字节序)
解决方案:
将GOARCH指定为小端字节序目标的平台:
GOARCH=mips64le
注意是le不是el。 可以通过
go tool dist list
命令查看Golang支持的所有操作系统和平台架构。