14

我在 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;
}

我正在尝试让 gprof 在我的计算机上工作。正如手册所建议的,我在终端中输入以下两行:

g++ -g -pg main.cpp -o a.out 
./a.out

但是,这不会gmon.out像预期的那样生成文件。当我尝试gprof在终端中输入时,它会说:

gprof: can't open: gmon.out (No such file or directory)

这是可以预料的,因为gmon.out不在那里......

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

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

  • 我的朋友,他有一个类似的 OS X 版本(我可以稍后请他确认),以及完全相同的版本g++gprof,能够gprof如我所述成功使用。

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

  • a.out完美运行,它打印出来Hello world!并且Goodbye world!. 我还尝试了一个包含多个类的更复杂的 C++ 程序,但它仍然存在同样的问题。一切正常编译和运行,但没有生成 gmon.out 文件。

4

1 回答 1

2

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

请注意此命令的输出:

ls -la /usr/bin/g++ /usr/bin/clang++

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

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

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

于 2016-11-29T17:38:08.683 回答