gmon.out isn't created when I compile with -pg flag with g++
我正在Mac OSX 10.8.5版(Mountain Lion)上运行。我有以下简单的C代码。
1 2 3 4 5 6 7 8 | #include <iostream> int main () { std::cout <<"Hello world!"<<std::endl; std::cout <<"Goodbye world!"<<std::endl; return 0; } |
我正在尝试让gprof在我的计算机上工作。如手册所述,我在终端中输入以下两行:
1 2 | g++ -g -pg main.cpp -o a.out ./a.out |
但是,这不会像预期的那样生成
1 | gprof: can't open: gmon.out (No such file or directory) |
这是可以预期的,因为
关于我在做什么错的任何想法?
编辑:其他可能有帮助的事情:
-
我的朋友有一个类似的OS X版本(我可以稍后要求他确认),并且完全相同的
g++ 和gprof 版本,能够
按照我的概述成功使用gprof 。 -
我使用的是
g++ 的较旧版本,但我在线阅读了更新为较新版本没有帮助的信息。 -
a.out 可以完美地工作,它可以打印出Hello world! 和Goodbye world! 。我还尝试了一个更复杂的C程序
几个类,它仍然有相同的问题。一切
编译并正常运行,但不会生成gmon.out文件。
您必须意识到,默认情况下,OS X / MacOS在系统上不提供GNU GCC。
注意此命令的输出:
1 | ls -la /usr/bin/g++ /usr/bin/clang++ |
这些可执行文件看起来完全相同。 (实际上!看起来它们是不同的,但是文件大小是相同的!)
据我所知,clang不支持gprof输出的产生。令人困惑的是,
我建议尝试使用自制软件在OS X / MacOS上安装GCC。您确实要小心如何安装它,等等,以便知道哪个命令对应于哪个编译器。