Go编译报错 link: running gcc failed: exit status 1(已解决)

背景  

在对一个开源的Go程序二次开发 重新编译时 ,

报错截图如下

报错文字如下:关键信息 link: running gcc failed: exit status 1

$ go build -o orchestrator-didi -i go/cmd/orchestrator/main.go
go build: -i flag is deprecated
# command-line-arguments
/data/scripts/go/pkg/tool/linux_amd64/link: running gcc failed: exit status 1
/bin/ld: /tmp/go-link-650714850/000024.o: unrecognized relocation (0x2a) in section `.text'
/bin/ld: final link failed: Bad value
collect2: error: ld returned 1 exit status

查看了Go的GitHub上的issue

记录该问题 

https://github.com/golang/go/issues/43996

问题原因 :

编译器或链接器版本可能不兼容或过时

我的原因可能是因为没有安装glibc-static 这个包

自己解决 

yum install gcc

yum install glibc-static

yum install binutils

这两个包解释

glibc-static 是一个包含 GNU C 库(glibc)的静态链接版本的软件包。GNU C 库是 Linux 系统中最基本的 C 库之一,它提供了许多标准 C 库函数的实现,如内存分配、字符串操作、文件操作等。

静态链接版本的 glibc 允许开发者将库的代码和数据嵌入到他们的可执行文件中,这意味着在运行时不需要依赖系统上已安装的动态链接版本的 glibc。这对于构建独立的可执行文件或者在某些情况下确保程序的兼容性和可移植性非常有用。

通常情况下,glibc-static 包含了静态链接版本的 libc.a 等库文件,您可以在编译时链接到您的程序中。

binutils 是一组工具,用于处理可执行文件、目标文件和库。这些工具包括链接器(ld)、汇编器(as)、目标文件复制工具(objcopy)、符号表工具(nm)等。binutils 可以在构建软件时执行许多任务,如链接不同的目标文件以创建可执行文件、将可执行文件拆分成独立的目标文件等。

gcc 是 GNU Compiler Collection 的缩写,它是一套包括编译器在内的工具集,用于编译和链接程序。gcc 最常用于编译 C 和 C++ 程序,但它也支持其他编程语言,如 Fortran、Objective-C、Ada 等。

gcc 提供了一系列命令行选项,用于控制编译器的行为,例如指定输出文件名、优化级别、预处理器定义等。它还包含了多个编译器前端和后端,以支持不同的源语言和目标平台。

重新编译成功

参考 

Go编译 报错 link: running gcc failed: exit status 1_c:\program files (x86)\go\pkg\tool\windows_386\lin-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/520394.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Lego-loam 算法三维建图

运行环境 Linux:Ubuntu18.04ros:MelodicCeres Solver 2.0.0(Ubuntu18.04安装Ceres)PCL 1.8.1(Ubuntu系统的PCL、Eigen卸载和安装) 运行数据集 lego-loam 39/39 终端一:进入catkin_ws工作空间…

【Flink网络数据传输】OperatorChain的设计与实现

文章目录 1.OperatorChain的设计与实现2.OperatorChain的创建和初始化3.创建RecordWriterOutput 1.OperatorChain的设计与实现 OperatorChain的大致逻辑 在JobGraph对象的创建过程中,将链化可以连在一起的算子,常见的有StreamMap、StreamFilter等类型的…

字符函数

1.字符分类函数 专门做字符分类的函数&#xff0c;都包含一个头文件#include <ctype.h> islower() 是一个用于判断字符是否为小写字母的函数。 通常情况下&#xff0c;如果一个字符是小写字母&#xff0c;则 islower() 函数会返回 true 或者一个表示真的值&#xff08…

【变量提升】关于JavaScript变量提升的理解,它导致了什么问题?

&#x1f601; 作者简介&#xff1a;一名大四的学生&#xff0c;致力学习前端开发技术 ⭐️个人主页&#xff1a;夜宵饽饽的主页 ❔ 系列专栏&#xff1a;JavaScript小贴士 &#x1f450;学习格言&#xff1a;成功不是终点&#xff0c;失败也并非末日&#xff0c;最重要的是继续…

大模型笔记:最少到最多提示过程 (Least to Most prompting, LtM)

LEAST-TO-MOST PROMPTING ENABLES COMPLEX REASONING IN LARGE LANGUAGE MODELS 2023 ICLR 1 概述 进一步发展维链提示过程 (CoT prompting) 分为两个阶段&#xff1a; 第一阶段&#xff1a;向语言模型提出查询&#xff0c;将问题分解成子问题。第二阶段&#xff1a;再次向语…

Z Potentials | 星爵,他的征途不止向量数据库

纵观过去几十年的科技发展史&#xff0c;每一代新的技术架构的出现往往都伴随着新的数据范式的出现&#xff0c;也催生了多家百亿到千亿美金数据平台的诞生。如果说 2023 年科技领域的关键词是 LLM&#xff0c;那么数据库领域的关键词一定非向量数据库莫属。向量数据库是一种专…

SpringMVC拦截器和过滤器执行顺序及区别

拦截器&#xff08;Inteceptor&#xff09;和过滤器&#xff08;Filter&#xff09;执行顺序&#xff1f; 拦截器和过滤器区别&#xff1f; 1、拦截次数不同&#xff1a; 过滤器&#xff1a;一次请求只能被一个过滤器拦截一次&#xff0c;它们按照在web.xml中的声明顺序依次执…

IJCAI23 - Continual Learning Tutorial

前言 如果你对这篇文章感兴趣&#xff0c;可以点击「【访客必读 - 指引页】一文囊括主页内所有高质量博客」&#xff0c;查看完整博客分类与对应链接。 本篇 Tutorial 主要介绍了 CL 中的一些基本概念以及一些过往的方法。 Problem Definition Continual Learning 和 Increm…

DataX及使用

DataX及使用 【一】DataX概述【二】DataX架构原理【1】设计理念【2】框架设计【3】运行流程【4】调度决策思路【5】DataX和Sqoop对比 【三】DataX部署【四】DataX上手【1】使用概述【2】配置文件格式【3】同步Mysql数据到HDFS 【五】DataX整合Springboot 【一】DataX概述 Data…

C++面试宝典【配文档,全方面学习】

原word文档[链接: https://pan.baidu.com/s/1CKnm7vHDmHSDskAgxgZgKA?pwdr4wv 提取码: r4wv 复制这段内容后打开百度网盘手机App&#xff0c;操作更方便哦 --来自百度网盘超级会员v5的分享] 一、C / C基础 1、简述C的内存分区&#xff1f; 一个C、C程序的内存分区主要有5个…

【李沐精读系列】GPT、GPT-2和GPT-3论文精读

论文&#xff1a; GPT&#xff1a;Improving Language Understanding by Generative Pre-Training GTP-2&#xff1a;Language Models are Unsupervised Multitask Learners GPT-3&#xff1a;Language Models are Few-Shot Learners 参考&#xff1a;GPT、GPT-2、GPT-3论文精读…

Spring Boot异常处理和单元测试

1.SpringBoot异常处理 1.1.自定义错误页面 SpringBoot默认的处理异常的机制&#xff1a;SpringBoot 默认的已经提供了一套处理异常的机制。一旦程序中出现了异常 SpringBoot 会向/error 的 url 发送请求。在 springBoot 中提供了一个叫 BasicErrorController 来处理/error 请…