使用g ++编译-pg标志时,不会创建gmon.out

nuk*_*guy 13 c++ macos g++ gprof

我在Mac OSX上运行,版本10.8.5(Mountain Lion).我有以下简单的C++代码.

main.cpp:

#include <iostream>

int main ()
{
    std::cout << "Hello world!"<<std::endl;
    std::cout << "Goodbye world!"<<std::endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我正试图让gprof在我的电脑上工作.如手册所示,我在我的终端中输入以下两行:

g++ -g -pg main.cpp -o a.out 
./a.out
Run Code Online (Sandbox Code Playgroud)

但是,这不会生成gmon.out应该的文件.当我尝试gprof在终端输入时,它说:

gprof: can't open: gmon.out (No such file or directory)
Run Code Online (Sandbox Code Playgroud)

这是预料到的,因为gmon.out不存在......

关于我做错了什么的任何想法?

编辑:其他一些可能有帮助的事情:

  • 我的朋友,有一个类似的OS X版本(我可以让他后来确认),以及完全相同的版本,g++并且gprof能够gprof成功使用,如我所概述的那样.

  • 我使用的是旧版本,g++但我在网上看到更新到新版本并没有帮助.

  • a.out完美的作品,它打印出Hello world!Goodbye world!.我还尝试使用更复杂的C++程序和几个类,它仍然有同样的问题.一切都编译并正常运行,但没有生成gmon.out文件.

Ste*_* Lu 2

您必须意识到 OS X/MacOS 默认情况下在系统上不提供 GNU GCC。

请注意该命令的输出:

ls -la /usr/bin/g++ /usr/bin/clang++
Run Code Online (Sandbox Code Playgroud)

这些可执行文件看起来相同。(实际上!看起来它们不同,但不知何故文件大小是相同的!)

据我所知,clang 不支持 gprof 输出的生成。尽管可能会令人困惑,但该gcc程序将运行 clang。

我建议尝试使用自制程序在 OS X/MacOS 上安装 GCC。您确实需要小心它的安装方式等,以便您知道哪个命令对应于哪个编译器。