是否有像-Wl,——whole-archive这样的方法来强制.so libs像.a libs一样在gcc中加载?<



我有一个用主代码注册回调的库。不幸的是,这意味着除非在库中引用其他内容,否则lib不会被拉入。我使用-Wl,——whole-archive在。a版本的库中修复了这个问题。不幸的是,它似乎不能在。so libs上工作。无论主代码是否知道库的存在,库都会修改主代码的功能,因此库是否被添加到链接中取决于是否需要它的功能。

这就是-Wl,--no-as-needed的作用。另请参阅push-state选项的文档,该文档展示了如何安全地使用其--as-needed对应项(在命令行上按需请求链接两个库,而不改变后续库的先前行为)。