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