ошибка при установке 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 ответов
лучший способ правильно скомпилировать 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 должен правильно скомпилироваться