首页 > 解决方案 > 如何在英特尔 Pin 工具中使用(编译)zlib(gzip 函数)压缩库?

问题描述

我在 ubuntu 20.04 上安装了 libz-dev。我在 pin/source/tools/SimpleExamples/icount.cpp 添加了以下几行:

#include <zlib.h>

在 main() 中:

gzFile gp;
gp = gzopen("compressed_log_file", "ab");
gzbuffer(gp, 100000);

我用于链接的 makefile 构建规则是:

$(OBJDIR)icount$(PINTOOL_SUFFIX): $(OBJDIR)icount$(OBJ_SUFFIX)
    $(LINKER) $(TOOL_LDFLAGS_NOOPT) $(LINK_EXE)$@ $< $(TOOL_LPATHS) $(TOOL_LIBS) -lz

除了我添加的 -lz 标志外,它遵循Intel Pin 用户指南。

我可以没有错误,但是当我运行 pin 工具时,我得到了这个错误:

E: Unable to load /pin/source/tools/SimpleExamples/obj-intel64/icount.so: dlopen failed: library "libz.so.1" not found

我的执行命令是:

../../../../pin -t icount.so -- ls
  1. 我链接正确吗?
  2. 我应该尝试静态链接而不是使用 dlopen 吗?

标签: makefilecompilationzlibdlopenintel-pin

解决方案


我无法直接编译,所以我最终只使用了 pin 工具,然后重定向输出(来自 stderr)并将其通过管道传输到 gzip 命令行实用程序中。

./path_to_pin/pin -t icount.so -- ls 3>&2 2>&1 1>&3 | gzip -c > my_compression_output.txt

推荐阅读