Я установил valgrind на Snow Leopard, используя патч https://bugs.kde.org/show_bug.cgi?id=205241. Однако, когда я запускаю его с двоичным кодом, скомпилированным из кода C++, мне говорят, что valgrind «не может выполнить двоичный файл». Какие флагов g ++ следует настроить для работы моей программы с valgrind?Компиляция двоичного кода для работы с valgrind на Snow Leopard
4
A
ответ
6
Обязательно используйте параметр -m32 для создания 32-разрядного исполняемого файла. Компилятор по умолчанию - 64-разрядный (при условии, что у вас 64-разрядная машина), но valgrind еще официально не поддерживает 64-разрядные исполняемые файлы в Mac OS X. Команда file
вашего исполняемого файла должна сообщать «Mach-O executable i386».
Спасибо! Это именно то, что я искал. Однако я не смог его скомпилировать. Я использую make-файл, чтобы сделать все это, и после добавления опции -m32 мне сказали, что «файл не является требуемой архитектурой» для всех моих файлов .o. – weicool
Вам нужно -m32 для компиляции и компоновки; похоже, что вы добавили его только для компиляции. Также убедитесь, что у вас есть 32-разрядные версии всех библиотек, которые вы используете. – mark4o