2017-03-18 75 views
1

我有Mac OS X Sierra 10.12.3,我知道Valgrind可能与我的系统不兼容。我已经成功地运行automake和svn的,但是当我尝试运行使,它说:Valgrind安装失败 - 使

priv/ir_opt.c:5930:14: error: explicitly assigning value of variable of type 'Int' (aka 'int') to itself [-Werror,-Wself-assign] 
    for (m = m; m < A_NENV; m++) { 

任何人都知道,如果这是由于兼容性与Mac OS或其他什么东西?谢谢。

+0

这不是'make',而是C编译器。删除所有设置的“-Werror”标志(可能位于“Makefile”中)。 – Jens

+0

@Jens感谢您的回答,尝试从Valgrind Makefile中删除所有'-Wall'和'-Werror',尝试从我的〜/ .profile中删除所有内容,但是我注意到它可能使用Xcode的make,因为它打印out'/ Applications/Xcode.app/Contents/Developer/usr/bin/make'。 – Holsen

+0

如果没有帮助,我建议修改源代码;因为'm = m'什么都不做,它可以安全地从ir_opt.c中移除:for(; m Jens

回答

0

由于延的建议,我发现ir_opt.c(注:对于人同样的问题:要警惕,因为有几个ir_opt.c文件,你需要编辑一个在VEX/priv/ir_opt.c),改变了m = mm = 0,因为变量m被宣布为0几行以上。

0

Valgrind不能在MacOS X Sierra上工作,我试了一会儿。

我知道你把它安装在SVN上,我也是这样,我从来没有遇到过这个错误。但是,如果您实际运行valgrind --tool=memcheck --leak-check=full -v ./<program>,则会发现自己遇到了错误。

从我读到的,这是由OS X源代码中的某些东西引起的,valgrind的开发人员无法对其软件进行修改,因为导致错误的OS X的部分在许可证和封闭源代码。或者直到最近,他们还没有开始更新自己的源代码,或者类似的东西。

不管怎么说,如果你想在OS X上使用valgrind,你必须安装一个带有linux的虚拟机。我使用的是具有lubuntu的VirtualBox,我将我的主文件夹分享给虚拟机,而且我没有任何问题以这种方式运行memchecks。任何发行版应该都可以,但海事组织的打火机更好。

如果由于某种原因,它实际上可以为你工作valgrind memchecks,那么我想你只是幸运。我仍然建议你切换到使用linux虚拟机,因为不能保证valgrind能够在OS X上完全运行,并且它可能不会捕获所有应该的东西。