Jos*_*vin 7 gcc profiling symbols shared-libraries
库并不总是包含_mcount符号,但是应用程序会这样做(您可以使用gobjdump或nm实用程序来验证它).我已经读过_mcount用于实现分析,但即使禁用分析并启用优化(-O2),该符号也会出现.它是否还有其他用途?
更新:我在Solaris上,所以这是Solaris链接器与GCC结合使用,我不确定这是否有所作为.GCC版本是4.2.2.即使我编译的文件只包含int main() { return 0; }没有链接库的代码,也会发生这种情况.
Update2:我输入:
$ g++ -O2 mytest.cpp
$ nm a.out | grep _mcount
[65] | 134547444| 1|FUNC |GLOB |0 |11 |_mcount
Run Code Online (Sandbox Code Playgroud)
并且g ++没有别的任何东西.另外,我尝试使用sun CC编译器进行编译,但它没有这个问题.我也尝试过更新GCC,符号仍然存在于4.4.1中.
嗯 奇怪,在我的机器上(ubuntu 9.10)不会发生这种情况。
为了进行测试,我只编译了一个小的问候词:
#include <stdio.h>
int main (int argc, char **args)
{
printf ("hello world\n");
}
Run Code Online (Sandbox Code Playgroud)
用编译
gcc test.c
Run Code Online (Sandbox Code Playgroud)
它没有_mcount符号。我检查了:
nm a.out | grep -i count
Run Code Online (Sandbox Code Playgroud)
尝试使用一些编译器开关(-g,-pg等),结果表明该符号仅在使用-pg编译应用程序时出现。在这种情况下,您启用了性能分析进行编译,因此_mcount符号具有存在的理由。
| 归档时间: |
|
| 查看次数: |
4659 次 |
| 最近记录: |