ошибка при установке Valgrind

Я пытаюсь установить Valgrind на Mac с Snow Leopard, но получаю ошибку. Вот что я печатаю в терминале.

$ curl -O http://valgrind.org/downloads/valgrind-3.8.1.tar.bz2
$ md5sum valgrind-3.8.1.tar.bz2
$ tar -xjvf valgrind-3.8.1.tar.bz2
$ cd valgrind-3.8.1
$ ./configure
$ make

Это ошибка, которую я получаю.

Making all in coregrind
make[2]: *** No rule to make target `/usr/include/mach/mach_vm.defs', needed by `m_mach/mach_vmUser.c'.  Stop.
make[1]: *** [all-recursive] Error 1
make: *** [all] Error 2

Как я могу исправить эту ошибку?

4 ответов


обязательно установите средства командной строки.

xcode-select --install

лучший способ правильно скомпилировать valgrind - использовать команду "xcode-select --install", как указано в приведенном выше ответе. Однако, как суб-оптимальный Хак, вы можете получить его скомпилированный, загрузив следующие файлы из источник OSX /mach в /usr / include/mach (создайте этот каталог):

mach_vm.defs    
task.defs
thread_act.defs
vm_map.defs

это немного грязный хак, но он должен заставить вас идти, если вы действительно не хотите загружать/устанавливать большие исходные файлы Xcode.


видимо, для компиляции на Macintosh, valgrind нужен файл /usr/include/mach/mach_vm.defs присутствовать. Хотя я не смог найти конкретные ссылки на mach_vm.defs будучи частью XCode в частности, кажется, что большинство обычного содержимого /usr/include/mach устанавливаются, когда XCode.

Если по какой-то причине вы не можете установить XCode на свой компьютер, вы можете получить большинство исходных файлов для этого конкретного каталога из эта часть открыть сайт источник от Apple.


С тех пор, как система защиты целостности системы была установлена на OSX, пользователь, даже не как root, может изменять /usr. Таким образом, изменение /usr/include/mach для добавления необходимых файлов становится невозможным. Единственная альтернатива сейчас редактировать файл Makefile.

файл Makefile под рукой должен быть расположен в coregrind/Makefile, и файлы mach должны быть расположены рядом с /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/ (заменить MacOSX10.12.sdk с соответствующей версией OSX).

должен быть символ имени am__append_17 определена по строке 160 или около того (может быть в другом месте для разных версий).

это должно выглядеть примерно так:

am__append_17 = \
    /usr/include/mach/mach_vm.defs \
    /usr/include/mach/task.defs \
    /usr/include/mach/thread_act.defs \
    /usr/include/mach/vm_map.defs

замените каждый экземпляр /usr/include С /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/, так что это выглядит как:

am__append_17 = \
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/mach/mach_vm.defs \
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/mach/task.defs \
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/mach/thread_act.defs \
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/mach/vm_map.defs

после этого valgrind должен правильно скомпилироваться