A (довольно болезненная) установка из исходного решения на основе этого патча , этого поста и этого ответа .
$ git clone https://github.com/Echelon9/valgrind.git
$ cd valgrind
$ git checkout feature/v3.14/macos-mojave-support-v2
$ ./autogen.sh
$ ./configure --prefix=/where/you/want/it/installed --enable-only64bit
$ make
Если вы получите следующую ошибку: No rule to make target '/usr/include/mach/mach_vm.defs’
, вам нужно будет запустить xcode-select --install
.Возможно, вам придется установить Xcode из магазина приложений, если у вас его еще нет.Как только это будет сделано, вам нужно будет отредактировать coregrind/Makefile
:
Поиск:
am__append_19 = \
/usr/include/mach/mach_vm.defs \
/usr/include/mach/task.defs \
/usr/include/mach/thread_act.defs \
/usr/include/mach/vm_map.defs
После двойной проверки существует следующая папка, префикс каждой строки:
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk
Конечный результат должен быть:
am__append_19 = \
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/include/mach/mach_vm.defs \
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/include/mach/task.defs \
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/include/mach/thread_act.defs \
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/include/mach/vm_map.defs
Теперь снова запустите make
, и включенные файлы должны быть найдены.Но это не обязательно означает, что он будет компилироваться.Я получил следующую ошибку:
vg_preloaded.c:136:19: error: expected ';' before 'const'
__private_extern__ const char *__crashreporter_info__ = "Instrumented by Valgrind " VERSION;
Исправление для этого - добавить следующую строку:
#define __private_extern__ extern
в следующие файлы:
coregrind/m_syscall.c
coregrind/m_syswrap/syswrap-darwin.c
coregrind/vg_preloaded.c
Наконец, вам нужно скрестить пальцы в надежде, что другие ошибки не появятся:
$ make
$ make install