gpt4 book ai didi

linux - 未使用功能的链接器错误 : When do they occur?

转载 作者:太空狗 更新时间:2023-10-29 12:21:02 29 4
gpt4 key购买 nike

假设一个静态库 libfoo 依赖于另一个静态库 libbar 的某些功能。这些和我的应用程序都是用 D 编写的。如果我的应用程序只直接使用 libfoo,并且只调用 libfoo 中的函数而不引用 libbar 中的符号,有时程序会在不将 libbar 传递给链接器的情况下成功链接,而其他时候则不会。

其中哪些发生似乎取决于我使用什么编译器来编译 libfoo、libbar 和我的应用程序,即使所有编译器都使用 GCC 工具链进行链接。如果我使用 DMD,如果我不将 libbar 传递给链接器,我将永远不会收到链接器错误。如果我使用 GDC,我有时会这样做,原因我不明白。如果我使用 LDC,我会一直使用。

当 libfoo 中引用的符号未定义但该符号出现在应用程序目标文件未引用的函数中时,决定 GCC 链接器是否失败的因素是什么?

最佳答案

What determines whether the GCC linker fails when a symbol referred in libfoo is undefined, but this symbol occurs in a function not referred to by the application object file?

如果链接器提示一个未解析的符号,那么这个符号从某处引用的。

通常链接器会告诉您未解析的引用来自哪个对象,但如果没有,-Wl,-y,unres_symbol 应该。

您可能还想阅读此 description整个事情是如何运作的。

关于linux - 未使用功能的链接器错误 : When do they occur?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8450905/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com