如何在Intel Pin工具中使用编译zlibgzip函数压缩库?

问题描述

我在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

紧跟Intel Pin User Guide之后,除了我添加的-lz标志。

我可以毫无错误地进行制作,但是当我运行销钉工具时,会出现以下错误:

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吗?

解决方法

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

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

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...