Golang 1.17编译失败[gcc执行出错:退出状态1]技术问询
问题分析与解决方案
问题根源
你遇到的编译错误是因为GCC 4.8.5的ld链接器版本过低,不支持Go 1.17生成的x86_64架构下的重定位类型(错误中的0x2a对应R_X86_64_REX_GOTPCRELX,这是较新的重定位指令,GCC 4.8.5的链接器无法识别)。
解决方案
方案1:升级GCC版本(推荐,适用于所有场景)
Go 1.17对系统工具链有最低版本要求,建议升级到GCC 5及以上版本(推荐GCC 7+)。在CentOS 7环境下可以通过devtoolset安装高版本GCC:
- 安装devtoolset仓库和对应版本GCC:
yum install centos-release-scl yum install devtoolset-7-gcc - 临时启用高版本GCC(当前shell会话生效):
scl enable devtoolset-7 bash - 若需永久生效,可将上述启用命令添加到
~/.bashrc或/etc/profile文件中。
方案2:强制使用Go内部链接器(仅适用于无cgo依赖的项目)
如果你的项目没有使用cgo,可以跳过系统的ld链接器,直接使用Go自带的内部链接器:
GO_LDFLAGS="-linkmode=internal" go install serviceName
注意:如果项目依赖cgo代码,该方法会失效,此时必须升级GCC。
内容的提问来源于stack exchange,提问作者Hitesh Kumar
相关产品推荐
相关产品推荐

