查看问题详情

编号项目分类查看权限最后更新
00000693A1000[所有项目] 所有分类公开2019-06-11 18:51
报告员djjdjjda2分派给administrator 
优先级严重性很严重出现频率总是
状态 已关闭处理状况已修正 
平台龙芯3A1000操作系统中标麒麟6.0桌面版操作系统版本6.0
摘要0000069: go语言在龙芯3A1000平台编译安装不通过
描述go语言在此平台下编译安装过程中抛出以下错误信息。
collect2: ld 以信号 11 [段错误] 退出。
/usr/bin/ld: $WORK/runtime/cgo/_obj/_cgo_main.o: ABI is incompatible with that of the selected emulation
/usr/bin/ld: failed to merge target specific data of file $WORK/runtime/cgo/_obj/_cgo_main.o
/usr/bin/ld: $WORK/runtime/cgo/_obj/_cgo_export.o: ABI is incompatible with that of the selected emulation
/usr/bin/ld: failed to merge target specific data of file $WORK/runtime/cgo/_obj/_cgo_export.o
/usr/bin/ld: $WORK/runtime/cgo/_obj/cgo.cgo2.o: ABI is incompatible with that of the selected emulation
/usr/bin/ld: failed to merge target specific data of file $WORK/runtime/cgo/_obj/cgo.cgo2.o
/usr/bin/ld: $WORK/runtime/cgo/_obj/gcc_context.o: ABI is incompatible with that of the selected emulation
/usr/bin/ld: failed to merge target specific data of file $WORK/runtime/cgo/_obj/gcc_context.o
/usr/bin/ld: $WORK/runtime/cgo/_obj/gcc_fatalf.o: ABI is incompatible with that of the selected emulation
/usr/bin/ld: failed to merge target specific data of file $WORK/runtime/cgo/_obj/gcc_fatalf.o
/usr/bin/ld: $WORK/runtime/cgo/_obj/gcc_libinit.o: ABI is incompatible with that of the selected emulation
/usr/bin/ld: failed to merge target specific data of file $WORK/runtime/cgo/_obj/gcc_libinit.o
/usr/bin/ld: $WORK/runtime/cgo/_obj/gcc_linux_mips64x.o: ABI is incompatible with that of the selected emulation
/usr/bin/ld: failed to merge target specific data of file $WORK/runtime/cgo/_obj/gcc_linux_mips64x.o
/usr/bin/ld: $WORK/runtime/cgo/_obj/gcc_setenv.o: ABI is incompatible with that of the selected emulation
/usr/bin/ld: failed to merge target specific data of file $WORK/runtime/cgo/_obj/gcc_setenv.o
/usr/bin/ld: $WORK/runtime/cgo/_obj/gcc_traceback.o: ABI is incompatible with that of the selected emulation
/usr/bin/ld: failed to merge target specific data of file $WORK/runtime/cgo/_obj/gcc_traceback.o
/usr/bin/ld: $WORK/runtime/cgo/_obj/gcc_util.o: ABI is incompatible with that of the selected emulation
/usr/bin/ld: failed to merge target specific data of file $WORK/runtime/cgo/_obj/gcc_util.o
/usr/bin/ld: $WORK/runtime/cgo/_obj/gcc_mips64x.o: ABI is incompatible with that of the selected emulation
/usr/bin/ld: failed to merge target specific data of file $WORK/runtime/cgo/_obj/gcc_mips64x.o
/tmp/go-build156375370/runtime/cgo/_obj/gcc_context.o: In function `_cgo_release_context':
runtime/cgo/gcc_context.c:14: relocation truncated to fit: R_MIPS_CALL16 against `_cgo_get_context_function'

问题重现步骤一、在X86平台上交叉编译出面向MIPS平台的Go语言自举编译工具链
所用工具 64位Linux操作系统的X86电脑
https://golang.org/dl/

下载 go1.8.1.linux-amd64.tar.gz

下载go1.8.1.src.tar.gz
解压压缩
在跟目录下建立两个文件夹
gomips
gox64
把解压的内容拷贝两个目录
https://storage.googleapis.com/golang/go1.8.1.src.tar.gz 到 gomips
https://storage.googleapis.com/golang/go1.8.1.linux-amd64.tar.gz 到 gox64
下面我们用gox64目录中的go 去交叉编译 gomips的go 生成安装环境包
在命令控制台执行
$ export GOROOT_BOOTSTRAP=/gox86
切换到gomips的src
$ cd /gomips/src
执行
$ GOOS=linux GOARCH=mips64le ./bootstrap.bash
执行完成根目录会生成
go-linux-mips64le-bootstrap.tbz

二、在龙芯平台上从源代码构建Go 1.8开发环境。

go1.8.1.src.tar.gz解压到根目录的go1.8.1
go-linux-mips64le-bootstrap.tbz 解压到根目录的 gomips
验证
go-linux-mips64le-bootstrap.tbz里面的go可以运行

$ cd /gomips/bin
$ export GOROOT=/gomips
$ ./go version
如果观察到以下输出,则基本可以说明交叉编译没有问题。
go version go1.8.1 linux/mips64le

cd /go1.8.1
在当前目录创建名为env.sh的shell脚本,输入以下语句后保存退出。
#!/bin/bash
export GOROOT_BOOTSTRAP=/gomips
export GOROOT=/go1.8.1
# Added for Loongson
export GO_TEST_TIMEOUT_SCALE=2
然后开始安装
$ source env.sh
$ cd src
$ ./all.bash
编译方法在龙芯3b1500+中标麒麟操作系统上,正常通过。
标签交叉编译链

活动

zhouling

2017-06-14 18:19

报告者   ~0000268

bhfchhn

zhouling

2017-06-14 18:42

报告者   ~0000269

你的思路有以下两个问题:
1)golang 是用低版本的 toolchain 编高版本的 toolchain,而你用的是同版本的 bootstrap tool chain,建议把 bootstrap tool chain 的版本降低一些;
我刚刚在龙芯 3a3000 机器上用 1.6 的 bootstrap tool chain 编出安装了 golang 1.8.1;如果你能提供邮箱给我的话,我可以把这个go-linux-mips64le-bootstrap.tbz文件发给你,你可以试试看,我本来尝试上传文件,但文件有点大,贴不上来
2)从编译错误输出来看,似乎你用的 go 编译器是 gccgo,建议你设置好 go 环境后,which go 看看到底用的编译器是哪个

djjdjjda2

2017-07-16 09:33

报告者   ~0000271

您好,我基本找到问题了
主要问题在于,中标的操作系统。
更换操作系统后问题解决。

administrator

2019-06-11 18:51

管理员   ~0000313

升级至最新loongnix发行版。

问题历史

日期 用户名 字段 更改
2017-06-14 14:03 djjdjjda2 新建问题
2017-06-14 14:03 djjdjjda2 添加标签: 交叉编译链
2017-06-14 18:19 zhouling 注释已添加: 0000268
2017-06-14 18:42 zhouling 注释已添加: 0000269
2017-07-16 09:33 djjdjjda2 注释已添加: 0000271
2019-06-11 18:51 administrator 分派给 => administrator
2019-06-11 18:51 administrator 状态 新建 => 已关闭
2019-06-11 18:51 administrator 处理状况 未处理 => 已修正
2019-06-11 18:51 administrator 注释已添加: 0000313