如何强制gcc从库中链接未引用的静态C ++对象【JAVA教程】

!
也想出现在这里? 联系我们
信息

如何强制gcc从库中链接未引用的静态C ++对象,第1张

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

我正在使用一个C ++库,可以build立一个共享或静态库。 这个库使用工厂技术,在程序启动时静态对象注册自己,并创build静态对象。

只要共享库被使用,这工作正常。 当使用静态版本时,没有一个静态对象被包含到最终的程序中(因为它们没有被直接引用),因此它们的function是不可用的。

有没有办法强制gcc链接时包含库中的所有静态对象?

图书馆是开源的,我可以修改它,如果有帮助。

如何初始化multithreading上下文中的静态variables?

__attribute __((构造函数))调用顺序混淆

您可以使用-Wl,–whole-archive -lyourlib ,请参阅ld的联机帮助页获取更多信息。

在命令行中完整包含-Wl, – whole-archive之后提到的任何静态库都将完全包含在内,如果需要,也可以再次关闭此库,如eg -Wl,–whole-archive -lyourlib -Wl,–no-whole-archive -lotherlib

一种破解帮助我。 还是要包含头文件。

// in the header with your class struct RegistrationHelper { RegistrationHelper(); }; static RegistrationHelper Helper; // in your cpp where you register your class RegistrationHelper::RegistrationHelper() {}

总结

以上是内存溢出为你收集整理的如何强制gcc从库中链接未引用的静态C ++对象全部内容,希望文章能够帮你解决如何强制gcc从库中链接未引用的静态C ++对象所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

© 版权声明
THE END
喜欢就支持一下吧
点赞183 分享
评论 抢沙发

请登录后发表评论

    请登录后查看评论内容