相关疑难解决方法(0)

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

我正在使用可以构建为共享库或静态库的C++库.该库使用工厂技术,其中静态对象在程序启动时自行注册并创建静态对象.

只要使用共享库,这样就可以正常工作.当使用静态版本时,没有任何静态对象被包含在最终程序中(因为它们没有被直接引用),因此它们的功能不可用.

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

该库是开源的,我可以修改它,如果这有帮助.

c++ linux gcc static-linking static-initialization

24
推荐指数
1
解决办法
1万
查看次数

强制链接未使用的共享库

从gcc 4.5移到gcc 4.6,现在它不链接到编译时未使用的库(即,如果没有从它们导入符号).

但是,这些库的目的是它们执行静态构造函数,从而使它们在运行时可用于应用程序(注册它们的符号).

有没有办法强制gcc链接到通过-l列出的所有库?

c++ linux gcc

15
推荐指数
1
解决办法
4453
查看次数

gperftools CPU Profiler到底是怎么开始的?

gperftools文档libprofiler应该链接到目标程序:

$ gcc myprogram.c -lprofiler
Run Code Online (Sandbox Code Playgroud)

(不改变程序代码).

然后程序应该使用特定的环境变量运行:

CPUPROFILE=/tmp/profiler_output ./a.out
Run Code Online (Sandbox Code Playgroud)

问题是:libprofile当仅仅加载探测器时,如何有机会启动和完成探查器,但是它的功能没有被调用?

该库中没有构造函数(证明). 库代码中"CPUPROFILE"的所有情况都不会引用启动分析器的任何位置.

我没有想法,在哪里看下一个?

linker gcc dynamic-linking google-perftools gperftools

9
推荐指数
1
解决办法
4852
查看次数