首页 > 解决方案 > .../libgcc.a 中的隐藏符号“__udivti3”被 DSO 引用

问题描述

我正在尝试在 Ubuntu 18 上使用 CMake 和 Clang 编译一个简单的可执行文件。一些来自第三方源并编译为共享库 libtommath__udivti3的代码最终会在编译器进行一些代码优化后调用该函数。

在链接时,我有一个来自 ld 的错误说hidden symbol "__udivti3" in /usr/lib/gcc/x86_64-linux-gnu/7/libgcc.a(_udivdi3.o) is referenced by DSO

我做了一些研究,感谢这个链接,这有效地意味着__udivti3共享库引用了它,但它不能从 libgcc.a 中使用,因为它在这个库中被标记为隐藏。

我的问题是无论我尝试修复它,链接总是失败。我试图链接libgcc_s位于同一目录中的哪个,但clang抱怨它找不到它。但另一方面,编译和链接在 MacOS 上可以完美运行,但那个有问题的符号仍然存在。

标签: clinker-errors

解决方案


推荐阅读