概述如何强制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 ++对象所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
请登录后查看评论内容