是什么 ? | : | an instrumentation framework for building dynamic analysis tools. There are Valgrind tools that can automatically detect many memory management and threading bugs, and profile your programs in detail. You can also use Valgrind to build new tools. |
开发语言 | : | C |
官方主页 | : | http://valgrind.org |
操作系统 | 包管理器 | 安装命令 |
---|---|---|
macOS | HomeBrew | brew install valgrind |
GNU/Linux | HomeBrew | brew install valgrind |
apt | sudo apt-get install -y valgrind | |
CentOS | yum | sudo yum install -y valgrind |
dnf | sudo dnf install -y valgrind | |
openSUSE | zypper | sudo zypper install -y valgrind |
Alpine Linux | apk | sudo apk add valgrind |
pacman | sudo pacman -Syyu --noconfirm | |
Gentoo Linux | Portage | sudo emerge valgrind |
step1、安装依赖
所有时 | Terminal + Shell + GNU CoreUtils |
下载时 | cURL |
解压时 | tar + bzip2 |
编译时 | gmake、 ( gcc + g++ ) / GCC | Clang / LLVM |
运行时 |
|
step2、使用curl命令下载Valgrind
源码包 ()
curl -LO https://sourceware.org/pub/valgrind/valgrind-3.15.0.tar.bz2
step3、使用tar解压Valgrind
源码包
tar vxf valgrind-3.15.0.tar.bz2
step4、进入valgrind-3.15.0
目录
cd valgrind-3.15.0
step5、查看valgrind-3.15.0
目录的内容
step6、创建构建目录,并进入该目录
mkdir build && cd build
step7、使用../configure
配置编译参数
../configure
是一个可执行的POSIX sh脚本,用它 配置后会产生gmake的配置文件Makefile。
../configure
的使用格式如下:
../configure [option]... [VAR=VALUE]...
option | 说明 | |
---|---|---|
--help | -h | 查看../configure 的使用帮助 | |
--version | -V | 查看../configure 是哪个版本的autoconf生成的 | |
--quiet | -q | --silent | 不输出checking... 这些信息 | |
--prefix=DIR | 指定安装目录。默认是/usr/local/ | |
--host=HOST | 设置目标程序运行的CPU平台 一般不需要设置,除非你想要 交叉编译 默认与宿主机一样 | |
--enable-FEATURE[=yes|no] | yes: 打开FEATURE no: 关闭FEATURE | |
--enable-dependency-tracking[=yes|no] | 是否开启依赖追踪 | |
--enable-option-checking[=yes|no] | 是否检查有无不认识的--enable-FEATURE 、--with-PACKAGE 参数 | |
--enable-silent-rules[=yes|no] | yes: 相当于make V=0 no: 相当于make V=1 | |
--enable-only64bit[=yes|no] | 是否只编译为64bit 程序 | |
--enable-only32bit[=yes|no] | 是否只编译为32bit 程序 | |
--enable-inner[=yes|no] | ||
--enable-ubsan[=yes|no] | 是否开启编译器 的Undefined Behavior Sanitizer特性 | |
--enable-lto[=yes|no] | 是否进行链接时优化 (Link Time Optimization ) | |
--enable-tls[=yes|no] | 是否支持线程本地变量 (Thread Local Support ) | |
--with-PACKAGE[=yes|no] | yes : 使用PACKAGE no: 不使用PACKAGE | |
--with-tmpdir=PATH | 指定零时文件存放位置 | |
--with-mpicc=NAME | 指定MPI2-ised 编译器的名字 |
与enable-FEATURE
对应的选项,还有disable-FEATURE
,disable-FEATURE
相当于enable-FEATURE=no
与 with-PACKAGE
对应的选项,还有without-PACKAGE
,without-PACKAGE
相当于 with-PACKAGE=no
VAR | VALUE示例 | 说明 |
---|---|---|
CC | gcc | clang | 指定C编译器 |
CFLAGS | -O2 -v | 指定C编译器的参数 |
CXX | g++ | clang++ | 指定C++编译器 |
CXXFLAGS | -O2 -v | 指定C++编译器的参数 |
CPP | cpp | 指定C预处理器 |
CPPFLAGS | -I<includeDIR> | 指定C预处理器的参数 |
CCAS | /usr/bin/as | 指定汇编器 命令 |
CCASFLAGS | 指定汇编器 命令的参数 | |
LDFLAGS | -L<libDIR> | 指定C链接器的参数 |
LIBS | -l<libName> | 指定C链接器要链接的库的名称 |
示例:
../configure \
--prefix=/usr \
--enable-only64bit \
--enable-lto \
CFLAGS='-O2 -v'
step8、使用make进行编译、安装
make && sudo make install