自从 OSX 上安装了系统完整性保护系统以来,用户,即使不是 root,也可以修改/usr
. 因此,修改 /usr/include/mach 以添加必要的文件变得不可能。现在唯一的选择是编辑生成文件本身。
手头的 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 应该可以正确编译