2013-11-07 4 views
11

Я работаю на Mac OSX, версия 10.8.5 (Mountain Lion?). У меня есть следующий простой код на C++.gmon.out не создается при компиляции с флагом -pg с g ++

main.cpp:

#include <iostream> 

int main() 
{ 
    std::cout << "Hello world!"<<std::endl; 
    std::cout << "Goodbye world!"<<std::endl; 
    return 0; 
} 

Я пытаюсь дргоЕ работать на моем компьютере. Как manual предлагает, я ввожу следующие две строки в моем терминале:

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

Однако это не создает файл gmon.out, как предполагается. Когда я пытаюсь печатать «дргоЕ» в терминале, он говорит:

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

, который следует ожидать, поскольку gmon.out не существует ...

Любые идеи о том, что я делаю неправильно ?

EDIT: Некоторые другие вещи, которые могут помочь:

-Мой друг, который имеет аналогичный OS X версии (я могу попросить его, чтобы подтвердить), и точно такие же версии г ++ и дргоЕ, был в состоянии использовать gprof успешно, как я изложил.

использованием -Я старую версию г ++, но я прочитал в Интернете, что обновление до новой версии не помогло ...

-a.out отлично работает, он печатает «Привет, мир! " и «Прощай мир!». Я также пробовал это с более сложной программой на C++ с несколькими классами, и она по-прежнему имеет ту же проблему. Все компилируется и работает нормально, но не создается файл gmon.out.

+0

Возможный дубликат http://stackoverflow.com/questions/1101545/problem-with-gprof-on-os-x-program-is-not-of-the-host-architecture, хотя один из ответов что 'gprof' теперь работает на OS X 10.6. Я не вижу, что вы делаете что-то неправильно, именно то, что вы делаете, работает так, как вы ожидали бы в моей Linux-системе. –

+0

Да, у меня 10.8.5, я тоже видел этот вопрос, но я решил, что начну новый поток, потому что у меня есть более новая версия OS X, и этот поток никуда не денется. Существует также проблема «тест не из архитектуры хоста», с которой сталкивается другой человек, которого у меня нет. – nukeguy

+2

Несмотря на то, что говорят люди, '-pg' не работает ни на одной из моих систем. 10.7-10.9.4. Я действительно считаю, что вы можете установить свою собственную версию gcc (отдельно от версии, предоставленной Apple), и профилирование будет работать там. – gautam

ответ

0

Вы должны понимать, что OS X/MacOS по умолчанию не предоставляет GNU GCC.

Обратите внимание на вывод этой команды:

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

Эти исполняемые файлы выглядят одинаково. (На самом деле, похоже, что они разные, но как-то размер файла идентичен!)

Насколько я могу судить, clang не поддерживает производство gprof-выхода. Как бы странно это ни было, программа gcc запустит clang.

Я бы рекомендовал использовать доморощенный для установки GCC на OS X/MacOS. Вы хотите быть осторожным в том, как он устанавливается и т. Д., Чтобы вы знали, какая команда соответствует тому компилятору.

Смежные вопросы