linux - Linux中通用的静态链接库

标签 linux hyperlink static-libraries

给定一个静态库 StaticLib,如何提前知道在 linux 中使用哪些编译器和链接器选项以及库?有一些程序显示依赖关系,但我认为没有人为特定编译器提供特定选项。 StaticLib 之类的东西依赖于 Lib1、Lib2 和 Lib3,因此对 gcc 使用选项 -x -y -x。

在 Stackoverflow 和 Internet 中,只要回答这个一般性问题,就会自动回答数以千计的特定问题。

最佳答案

静态库对库没有明确的依赖性——不像动态库,动态库有(并且你可以在类 Unix 平台上使用 ldd 查看其依赖性)。您可以使用 nm 查看库中哪些符号已定义、未定义等,这将为您提供一些信息。对于“哪个库包含我的库引用但 undefined symbol 的定义?”这个问题没有单一的答案。因为任何具有该符号定义的库都与链接器的任何其他库一样有效。 (对于动态库也是如此 - 它们所宣传的依赖项只是链接器的指南。)

至于编译器标志,没有通用的方法来确定使用哪些标志来链接给定的库,因为在某些情况下,各种编译器要么从生成的库/可执行文件中删除这些信息,要么根本不记录它首先。开发人员通常会将这些信息与他们的库一起带外发布,例如“要链接到这个库,使用标志 XXX”。

关于linux - Linux中通用的静态链接库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25349568/

相关文章:

javascript - 目标 ="_blank"与 window.open

c++ - 链接到编译为 C++ 的 C 库

Linux 重命名命令,但用于动态值

linux - 保持 X11 应用程序处于事件状态,我可以断开连接并随后重新连接

c - C 编程链表更新失败

c++ - 依赖于同一个静态链接库的可执行文件和共享库

c++ - 在C++中将类导出到静态库时,如何隐藏类的私有(private)函数?

linux - 使用脚本重新启动 jboss 的最干净方法

c# - Asp.net Core Websocket 与 linux/docker 兼容吗?

android - 使 TextView 中的链接在 Android 应用程序中打开 WebView