我正在編譯一個(gè)golang包,其中包括使用的共享c庫(kù)的集成。所有內(nèi)容都在 docker 映像 中成功構(gòu)建,但由于 (也) 它失敗并顯示錯(cuò)誤: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 發(fā)行說(shuō)明,但找不到 的任何相關(guān)更改。cgo我檢查了gcc和ld的版本,這些都是不同的。我甚至用和設(shè)置了一個(gè)ubuntu發(fā)行版,在那里我遇到了這個(gè)問(wèn)題,所以我想,這不會(huì)導(dǎo)致它。go1.13.8gcc (Ubuntu 8.4.0-3ubuntu2) 8.4.0GNU ld (GNU Binutils for Ubuntu) 2.34go您有任何線索或建議,我如何找到此問(wèn)題的根本原因?檢查gcc和ld是否正確,或者哪些其他工具需要調(diào)查?
1 回答

飲歌長(zhǎng)嘯
TA貢獻(xiàn)1951條經(jīng)驗(yàn) 獲得超3個(gè)贊
多虧了Zyl,我才能夠縮小問(wèn)題的范圍。
我檢查了幾個(gè)分布(靶心,破壞者,拉伸),并且使用靶心,構(gòu)建失敗了。在我的情況下,既不是來(lái)自的版本,也不是導(dǎo)致問(wèn)題的原因。ld
binutils
gcc
似乎,用于處理鏈接器標(biāo)記的默認(rèn)設(shè)置已更改。我解決了我的問(wèn)題,從 https://stackoverflow.com/a/62117174/2290153 解決方案并添加到環(huán)境中。根據(jù) https://manpages.debian.org/bullseye/binutils-common/gold.1.en.html 這是鏈接器的默認(rèn)值,但不是 。DT_NEEDED
export CGO_LDFLAGS=-Wl,--no-as-needed
ld.gold
ld
對(duì)我?guī)椭艽蟮氖敲畹臉?biāo)志,以查看正在執(zhí)行的gcc命令。-x
go build
cgo
- 1 回答
- 0 關(guān)注
- 276 瀏覽
添加回答
舉報(bào)
0/150
提交
取消