gpt4 book ai didi

gcc - 为什么 GCC 编译的应用程序总是包含 _mcount 符号?

转载 作者:行者123 更新时间:2023-12-04 11:32:08 25 4
gpt4 key购买 nike

库并不总是包含 _mcount 符号,但应用程序包含(您可以使用 gobjdump 或 nm 实用程序验证这一点)。我读过 _mcount 用于实现分析,但即使禁用分析并启用优化(-O2),该符号仍存在。它是否有其他其他用途?

更新:我在 Solaris 上,所以这是与 GCC 结合的 Solaris 链接器,我不确定这是否有所不同。 GCC 版本是 4.2.2。即使我编译了一个只包含代码 int main() { return 0; } 的文件,也会发生这种情况。没有链接库。

更新2:我输入:

$ g++ -O2 mytest.cpp
$ nm a.out | grep _mcount
[65] | 134547444| 1|FUNC |GLOB |0 |11 |_mcount

并且 g++ 没有任何别名。另外,我试过用sun CC编译器编译,没有这个问题。我也尝试更新 GCC,符号仍然存在于 4.4.1。

最佳答案

嗯。奇怪,在我的机器上(ubuntu 9.10)这不会发生。

为了测试,我刚刚编译了一个小的 hello-word:

#include <stdio.h>

int main (int argc, char **args)
{
printf ("hello world\n");
}

编译与
gcc test.c

它没有 _mcount 符号。我检查了:
nm a.out | grep -i count

尝试一些编译器开关(-g、-pg 等),结果证明只有在使用 -pg 编译应用程序时才会出现该符号,在这种情况下,您在启用分析的情况下进行编译,因此 _mcount 符号有存在的理由。

关于gcc - 为什么 GCC 编译的应用程序总是包含 _mcount 符号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2028911/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com