为了账号安全,请及时绑定邮箱和手机立即绑定

golang 与 cgo 抛出错误收集 2: 错误: ld 返回 1 退出状态

golang 与 cgo 抛出错误收集 2: 错误: ld 返回 1 退出状态

Go
慕妹3146593 2022-10-04 19:37:42
我正在编译一个golang包,其中包括使用的共享c库的集成。所有内容都在 docker 映像 中成功构建,但由于 (也) 它失败并显示错误:cgogolang:1.15.15golang:1.16.6golang:1.16.7golang:1.17/usr/bin/ld: src/foobar/lib/libXYZ.so: undefined reference to `feenableexcept'/usr/bin/ld: src/foobar/lib/libXYZ.so: undefined reference to `floor'.../usr/bin/ld: src/foobar/lib/libXYZ.so: undefined reference to `memoFree'/usr/bin/ld: src/foobar/lib/libXYZ.so: undefined reference to `memoMalloc'collect2: error: ld returned 1 exit status我检查了 golang 发行说明,但找不到 的任何相关更改。cgo我检查了gcc和ld的版本,这些都是不同的。我甚至用和设置了一个ubuntu发行版,在那里我遇到了这个问题,所以我想,这不会导致它。go1.13.8gcc (Ubuntu 8.4.0-3ubuntu2) 8.4.0GNU ld (GNU Binutils for Ubuntu) 2.34go您有任何线索或建议,我如何找到此问题的根本原因?检查gcc和ld是否正确,或者哪些其他工具需要调查?
查看完整描述

1 回答

?
饮歌长啸

TA贡献1951条经验 获得超3个赞

多亏了Zyl,我才能够缩小问题的范围。

我检查了几个分布(靶心,破坏者,拉伸),并且使用靶心,构建失败了。在我的情况下,既不是来自的版本,也不是导致问题的原因。ldbinutilsgcc

似乎,用于处理链接器标记的默认设置已更改。我解决了我的问题,从 https://stackoverflow.com/a/62117174/2290153 解决方案并添加到环境中。根据 https://manpages.debian.org/bullseye/binutils-common/gold.1.en.html 这是链接器的默认值,但不是 。DT_NEEDEDexport CGO_LDFLAGS=-Wl,--no-as-neededld.goldld

对我帮助很大的是命令的标志,以查看正在执行的gcc命令。-xgo buildcgo


查看完整回答
反对 回复 2022-10-04
  • 1 回答
  • 0 关注
  • 280 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号