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

  • 相关阅读:
    三元运算符嵌套问题
    tp框架利用redis存储session
    PHP date('W')遇到跨年问题
    AES加解密 集成 spring MVC
    python SMTP 发送邮件
    mysql数据库安装过程
    (转)Apache启动过程
    apache服务器全局配置详解
    Apache 的 httpd.conf 详解(很实用)
    安装apache遇到的问题总结
  • 原文地址:https://www.cnblogs.com/EasyNVR/p/13364656.html
Copyright © 2020-2023  润新知