前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用Go语言编译互联网视频直播点播平台EasyDSS出现ld returned 1 exit status错误

使用Go语言编译互联网视频直播点播平台EasyDSS出现ld returned 1 exit status错误

作者头像
EasyNVR
发布2020-07-23 16:33:57
1.5K0
发布2020-07-23 16:33:57
举报
文章被收录于专栏:EasyNVREasyNVR

由于Go语言非常易学,且代码精简,我们很多同事在研发视频平台的时候,都喜欢拿Go语言来做编程。我们之前也讲过关于GO语言编译的相关问题,比如:Go语言编程ioutil.ReadAll的用法注意点go语言搭建重定向和反向代理的区别及使用等。

本文我们还讲一下Go 语言开发出现的其他问题,我们的编译人员使用Go语言编译EasyDSS时,出现“collect2.exe: error: ld returned 1 exit status”报错。

在开发过程中,升级 Go 版本后,编译代码出现一堆mingw64 错误,最后一句话为“collect2.exe: error: ld returned 1 exit status”。

原因分析

查看引起错误的代码为获取软件编译时间的代码导致的问题,这一段代码使用了Cgo获取软件编译时间。

代码语言:javascript
复制
/*
const char* build_time(void)
{
    static const char* psz_build_time = `ls_date` " " `ls_time` ;
    return psz_build_time;
}
*/
import "C"

此段代码并无错误,经过上一次可编译版本,也未进行修改,初步推断为升级 Go 版本导致,怀疑Go版本与Cgo调用的gcc编译器不匹配导致。

查看 Go 环境为:

gcc 版本为:

两者对比,Go版本为32位版本,gcc为64位版本,32位版本的程序调用64位的编译器,导致出现此种问题。

解决办法:

在此我们为大家提出两种解决办法:

第一种是将下载32位版本的gcc编译器,可以使用。 第二种解决办法为使用64位版本的编译器,可以正常使用。

我采用是第二种解决办法,下载64位版本的Go语言开发环境go1.14.3.windows-amd64,其中amd64代表为64位程序,下载完毕后直接将对应的bin文件设置为环境变量即可。如果使用GoLand进行开发,可以直接如下配置:

  1. File—Setting—Go—GOROOT;
  2. 将 go1.14.3.windows-amd64 的路径添加到 GOROOT 中;
  3. 选中刚刚添加的环境,重新编译程序即可通过。
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-07-23 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 原因分析
  • 解决办法:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档