Gmon.out не создается при компиляции с флагом -pg с g++
Я работаю на 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 не создается.
Ответы
Ответ 1
Вы должны понять, что OS X/MacOS по умолчанию не предоставляет GNU GCC.
Обратите внимание на вывод этой команды:
ls -la /usr/bin/g++ /usr/bin/clang++
Эти исполняемые файлы выглядят одинаково. (На самом деле, похоже, что они разные, но как-то размер файла идентичен!)
Насколько я могу судить, clang не поддерживает производство gprof-вывода. Как бы странно это ни было, программа gcc
будет запускать clang.
Я бы порекомендовал попробовать использовать homebrew для установки GCC на OS X/MacOS. Вы хотите быть осторожным о том, как он устанавливается и т.д., Чтобы вы знали, какая команда соответствует тому компилятору.