强制Go不使用gold链接器
我正在Flathub的 CI中为一个aarch64 Linux架构构建一个Go包。构建在编译一个C 依赖时失败:
# github.com/rclone/rclone
/usr/lib/sdk/golang/pkg/tool/linux_arm64/link: running gcc failed: exit status 1
/run/ccache/bin/gcc -Wl,-z,now -Wl,-z,nocopyreloc -fuse-ld=gold -Wl,--build-id=0xa27f3be6a0f85349703b5480f79c1a72aa055c8f -o $WORK/b001/exe/a.out -rdynamic /tmp/go-link-3266372780/go.o /tmp/go-link-3266372780/000000.o /tmp/go-link-3266372780/000001.o /tmp/go-link-3266372780/000002.o /tmp/go-link-3266372780/000003.o /tmp/go-link-3266372780/000004.o /tmp/go-link-3266372780/000005.o /tmp/go-link-3266372780/000006.o /tmp/go-link-3266372780/000007.o /tmp/go-link-3266372780/000008.o /tmp/go-link-3266372780/000009.o /tmp/go-link-3266372780/000010.o /tmp/go-link-3266372780/000011.o /tmp/go-link-3266372780/000012.o /tmp/go-link-3266372780/000013.o /tmp/go-link-3266372780/000014.o /tmp/go-link-3266372780/000015.o /tmp/go-link-3266372780/000016.o /tmp/go-link-3266372780/000017.o /tmp/go-link-3266372780/000018.o /tmp/go-link-3266372780/000019.o /tmp/go-link-3266372780/000020.o /tmp/go-link-3266372780/000021.o /tmp/go-link-3266372780/000022.o /tmp/go-link-3266372780/000023.o /tmp/go-link-3266372780/000024.o /tmp/go-link-3
collect2: fatal error: cannot find ‘ld’
看起来Go正在用带有 -fuse-ld=gold 的gcc,据我所知,这会请求gold链接器,但在构建环境中并没有gold链接器。如何让Go使用其他链接器?
解决方案
自从发帖后,我在别处找到了问题的答案。-ldflags='-extldflags=-fuse-ld=bfd' 给了我帮助。
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。