无法在macOS High Sierra上构建和安装Valgrind

时间:2018-02-09 22:07:02

标签: macos valgrind macos-high-sierra

我无法在macOS High Sierra上安装Valgrind。它不能通过brew获得。我试过了3.10。在make install之后,我收到此消息:

configure: error: Valgrind works on Darwin 10.x, 11.x, 12.x, 13.x and 14.x (Mac OS X 10.6/7/8/9/10)

Homebrew说:

valgrind: This formula either does not compile or function as expected on macOS
versions newer than Sierra due to an upstream incompatibility.
Error: An unsatisfied requirement failed this build.

9 个答案:

答案 0 :(得分:8)

我遇到了这样的问题。 所以,我找到了解决方案。您应该通过此代码安装valgrind brew install --HEAD valgrind

答案 1 :(得分:4)

我创建了一个valgrind 3.13.0的端口,可以在macOS High Sierra(10.13.x)上运行。你可以在这里得到它:https://github.com/padiakalpesh/valgrind_3.13_high_sierra

获取源后,从源目录中运行以下命令:

./configure
make
sudo make install

答案 2 :(得分:2)

我已经在2018年7月开始这项工作,以供参考:

https://gist.github.com/AlessandroMinali/d8316d6cc650c97027433644c2ff31ee

编辑./configure

- 5468: applellvm-5.1|applellvm-6.*|applellvm-7.*|applellvm-8.*)
+ 5468: applellvm-5.1|applellvm-6.*|applellvm-7.*|applellvm-8.*|applellvm-9.*)


- 5879:          16.*)
+ 5879:          17.*)

运行

./autogen.sh
./configure
make
make install

创建文件〜/ .valgrind.supp

# false positive for any executable (it seems)
# macOS 10.12.6
# valgrind 3.13.0
{
    libtrace initialization false positive
    Memcheck:Param
    msg->desc.port.name
    fun:mach_msg_trap
    fun:mach_msg
    fun:task_set_special_port
    fun:_os_trace_create_debug_control_port
    fun:_libtrace_init
}

创建文件〜/ .valgrindrc

--suppressions=$HOME/.valgrind.supp

问题排查

  • 如果无法读取禁止文件副本并粘贴$ HOME的内容
  • 如果它抱怨clang版本,请提高第一个编辑水平
  • 如果它抱怨达尔文版本,请提高第二个修改

答案 3 :(得分:2)

简单安装Valgrind在最新的macOS上安装时存在一些兼容性问题,但存在解决此问题的方法。当您尝试使用brew安装它时,肯定会收到此错误消息。

$ brew安装valgrind   valgrind:此公式无法按预期在macOS上编译或运行   由于上游不兼容,版本比High Sierra更新。   错误:无法满足的要求导致此构建失败。

-------------------------------------------------- - - - - - - - - - - 解 - - - - - - - - - - - - - - - ---------------------------------

第一步:$ brew编辑valgrind

第二步:在文件中找到这一行->(URL“ https://sourceware.org/git/valgrind.git”)

Step3:将其替换为->(网址为“ git://sourceware.org/git/valgrind.git”)

第4步:$ brew更新

第5步:$ brew install --HEAD valgrind

完成!

让我知道它是否仍然无法正常工作。 谢谢!

答案 4 :(得分:1)

Valgrind是一款相当敏感的软件,需要对每个主要版本的macOS进行更新。

截至2018年2月,没有发布的Valgrind版本支持macOS High Sierra(10.13)。您需要使用Valgrind的开发版本,或使用替代工具。 (Apple的Instruments可能具有您正在寻找的一些功能。)

答案 5 :(得分:1)

我定期在macOS上构建Valgrind的git head版本。如果您安装了xcode,那么除了遵循here说明之外,还有更多功能。

我稍后会使用我的构建脚本进行更新。

作为替代方案,您可能需要考虑使用clang消毒剂。这可以在xcode中启用,或者使用-fsanitize = X选项启用(其中X是地址,未定义,线程,内存和其他一些选项)。

答案 6 :(得分:1)

使用brew install --HEAD valgrind也对我有用,但是一定要知道拉HEAD版本并进行构建/安装将花费一些时间。

但是,不需要其他更改。

答案 7 :(得分:1)

MacPorts版本于2018年9月开始为我工作!

为完整性起见,该命令(完成速度非常快-显然是预先构建的):

sudo port install valgrind-devel

版本:

$ valgrind --version
valgrind-3.14.0.GIT

答案 8 :(得分:0)

以下各项在macOS 10.13.6上使用最新的Valgrind版本3.14.0(2018年10月9日)对我有用。

VERSION="3.14.0"
wget -O - http://www.valgrind.org/downloads/valgrind-"$VERSION".tar.bz2 | tar xjf -
cd valgrind-"$VERSION"
# use --prefix=/path/to if you want it installed somewhere in particular
./configure
make
# may need sudo
make install
# test all is working
valgrind ls -l

这些说明摘自Valgrind释放tar球内的README