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 を自分のコンピューターで動作させようとしています。マニュアルが示唆するように、次の 2 行を端末に入力します。

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プログラムは clang を実行します。

OS X/MacOS に GCC をインストールするには、homebrew を使用することをお勧めします。どのコマンドがどのコンパイラに対応するかがわかるように、インストール方法などに注意する必要があります。

于 2016-11-29T17:38:08.683 に答える