Linux中的一般静态链接库

时间:2014-08-17 13:22:04

标签: linux hyperlink static-libraries

给定一个静态库StaticLib,如何预先知道在linux中使用哪些编译器和链接器选项和库?有一些程序显示依赖关系,但我认为没有人给出特定编译器的特定选项。类似于StaticLib的东西取决于Lib1,Lib2和Lib3,所以使用选项-x -y -x表示gcc。

在Stackoverflow和互联网中,只有通过回答这个一般性问题才能自动回答数千个具体问题。

1 个答案:

答案 0 :(得分:1)

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

对于编译器标志,没有通用的方法来确定用于链接给定库的标志,因为在某些情况下,各种编译器将从生成的库/可执行文件中删除此信息,或者从不记录它首先。开发人员通常会在他们的图书馆旁边带外宣传这些信息,例如: "要链接此库,请使用标记XXX"。