如何强制gcc链接库中未引用的静态C ++对象

我使用的C ++库可以构建为共享库或静态库。该库使用一种工厂技术,该技术在程序启动时创建静态对象并注册静态对象。

只要使用共享库,此方法就可以正常工作。使用静态版本时,所有静态对象都不会包含在最终程序中(因为它们没有被直接引用),因此它们的功能不可用。

有没有一种方法可以在链接时强制gcc包含库中的所有静态对象?

该库是开源的,如果有帮助,我可以对其进行修改。

回答:

您可以使用-Wl,--whole-archive -lyourlibld有关更多信息,请参见联机帮助页。

-Wl之后的所有静态库都将完全包含在内,命令行中的-whole-archive完全包含在内,如果需要,您也可以再次将其关闭,例如-Wl,--whole-archive -lyourlib -Wl,--no-whole-archive -lotherlib

以上是 如何强制gcc链接库中未引用的静态C ++对象 的全部内容, 来源链接: utcz.com/qa/412915.html

回到顶部