如何正确安装Valgrind?

10

我现在正在安装valgrind,直到执行“make install”命令之前一切顺利。 下一个命令“make regtest”输出以下错误:

../../depcomp: line 689: exec: g++: not found
make[5]: *** [leak_cpp_interior.o] Error 127
make[5]: Leaving directory `/home/kbubuntu/valgrind-3.9.0/memcheck/tests'
make[4]: *** [check-am] Error 2
make[4]: Leaving directory `/home/kbubuntu/valgrind-3.9.0/memcheck/tests'
make[3]: *** [check-recursive] Error 1
make[3]: Leaving directory `/home/kbubuntu/valgrind-3.9.0/memcheck/tests'
make[2]: *** [check-recursive] Error 1
make[2]: Leaving directory `/home/kbubuntu/valgrind-3.9.0/memcheck'
make[1]: *** [check-recursive] Error 1
make[1]: Leaving directory `/home/kbubuntu/valgrind-3.9.0'
make: *** [check] Error 2

我该如何解决这个问题?谢谢。

1
首先安装g++。输入sudo apt-get install g++即可。 - shiv garg
即使我使用gcc工作? - Shtrudle
1
无论如何,它们都已经安装好了。 - Shtrudle
那就不应该发生。 - shiv garg
你确定已经安装了g++吗?还有,关于安装构建必备项。 - shiv garg
显示剩余6条评论
4个回答

48

简短回答:从源码编译。

如何操作?

  1. 以root权限卸载不能工作的valgrind版本 (例如使用sudo):

apt-get --purge valgrind 或者 dpkg --remove valgrind 或者 yum remove valgrind

  1. 这里获取源码。

  2. 找到最新版本 (例如 3.17.0)

  3. 下载源码: wget https://sourceware.org/pub/valgrind/valgrind-3.17.0.tar.bz2

  4. 解压缩存档 tar xvf valgrind-3.17.0.tar.bz2

  5. 进入未压缩的存档 cd valgrind-3.17.0

  6. 配置 ./configure

  7. 编译 make

  8. 安装 make install (使用root权限,例如sudo)

注意:对于树莓派4用户非常有用 - 默认的valgrind安装会生成大量内部错误。请参见Valgrind reports hundreds of errors in Hello World program on RaspberryPi 4B


3
对于Dockerfile: # Valgrind!

RUN apt-get install -y valgrind

可以改为:

安装Valgrind调试工具

RUN apt-get install -y valgrind

添加Valgrind安装包并解压到临时目录

ADD https://sourceware.org/pub/valgrind/valgrind-3.15.0.tar.bz2 /tmp/valgrind-3.15.0.tar.bz2

设置工作目录

WORKDIR /src

解压缩安装包并进行配置、编译、安装,并删除临时文件

RUN tar --strip-components=1 -x -f /tmp/valgrind-3.15.0.tar.bz2
&& cd build
&& ../configure
--prefix=/opt/valgrind
&& make
&& make install
&& rm -f /tmp/valgrind-3.15.0.tar.bz2

设置VALGRIND_LIB环境变量

ENV VALGRIND_LIB /opt/valgrind/lib/valgrind

将Valgrind添加至环境变量中

ENV PATH="/opt/valgrind/bin:${PATH}"
- Thomas J Younsi

18

所有主要的 Linux 发行版都将在其软件仓库中包含 valgrind。你可以在基于 Debian 的系统中通过 apt 命令来找到它:

apt search valgrind

不过首先尝试一下:

apt install valgrind

这应该能够运行,并拉取任何依赖项。记住,如果您不是超级用户,您需要在这些命令前加上 sudo

这是一个很棒的工具,玩得开心。


先生,我刚刚做到了...而且它起作用了...请告诉我它正在使用哪个缓存服务器。 - shiv garg
你是指 apt 吗?这取决于你的确切发行版以及它的配置方式。不过这是一个单独的问题 ;) 如果你已经得到了原始问题的答案,请勾选其中一个复选框表示解决了问题。 - CodeClown42
1
如果您想询问关于 apt 的问题,Unix & Linux Exchange 是一个更合适的地方:http://unix.stackexchange.com/questions - CodeClown42

2

我认为这是由于依赖未满足导致的。 安装g++。 通过

sudo apt-get install g++

然后再尝试一次。 错误是由于exec无法找到任何名为g ++的软件包。


如果可以的话,请尝试安装build-essentials。 - shiv garg
对不起,我还是个 Linux 新手,请问我该怎么试一下呢? - Shtrudle
sudo apt-get install build-essential - shiv garg

0

在尝试在Ubuntu 20.04中安装Valgrind时,您可以使用apt或snap(请注意版本号):

:~/valgrind-3.18.1$ valgrind

命令“valgrind”未找到,但可以使用以下命令进行安装:

sudo snap install valgrind # 版本3.18.1,或 sudo apt install valgrind # 版本1:3.15.0-1ubuntu9.1

虽然snap提供了最新版本,但我更喜欢按照@g10guang的说明编译源代码来本地安装它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接