随笔 - 1506  文章 - 1  评论 - 7  阅读 - 58万

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

由于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获取软件编译时间。

/*
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. 选中刚刚添加的环境,重新编译程序即可通过。

posted on   EasyNVR  阅读(212)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 提示词工程——AI应用必不可少的技术
· 地球OL攻略 —— 某应届生求职总结
· 字符编码:从基础到乱码解决
· SpringCloud带你走进微服务的世界
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示