解决 dyninst-12.3.0 最新版编译依赖报错问题

dyninst-12.3.0 最新版存在的问题

dyninst-12.3.0 版本中 README 和 Building Dyninst 部分的说明不准确,可能官方更新版本后,未及时更新文档,导致关于依赖库的版本介绍有错,比如 elfutils 需要 1.8.6 而不是 0.173,Boost 需要 1.70.0 而不是 1.61.0,另外 Intel Thread Building Blocks (TBB) 最新版 2021.8 编译完并不识别。

boost 版本太低

下载 Boost-1.70.0 或以上版本源码,三步安装:

1
2
3
./bootstrap.sh
./b2
/b2 install --prefix=/path/to/install

安装后指定 dyninst cmake 配置选项:-DBoost_ROOT_DIR=/path/to/install

缺少 TBB 库

下载 one_TBB-2018_U6 版本源码,通过下面脚本进行编译安装:

1

安装后指定 dyninst cmake 配置选项:-DTBB_ROOT_DIR=/path/to/install

找不到 libiberty 库

libiberty 是 binutils 库下面的,属于 GNU 工具集,默认不安装。Ubuntu 下执行 sudo apt-get install libiberty-dev 可以安装此库(未亲测)。

1
sudo apt install binutils-dev
1
sudo yum install binutils-devel

elfutils 版本太低

下载 elfutils-0.186 版本源码,configure 时注意跟上后面两个选项,安装脚本:

1

安装后指定 dyninst cmake 配置选项:-DElfUtils_ROOT_DIR=/path/to/install

注意,这里是 -DElfUtils_ROOT_DIR,而不是官方介绍的 -DLibElf_ROOT_DIR