makefile - 如何在英特尔 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
- 我链接正确吗?
- 我应该尝试静态链接而不是使用 dlopen 吗?
解决方案
我无法直接编译,所以我最终只使用了 pin 工具,然后重定向输出(来自 stderr)并将其通过管道传输到 gzip 命令行实用程序中。
./path_to_pin/pin -t icount.so -- ls 3>&2 2>&1 1>&3 | gzip -c > my_compression_output.txt
推荐阅读
- c - 在 C 中,如何从 UNIX 中的二进制文件中删除数据(结构)?
- r - 计算R中数据框中组内的比例
- azure - 缺少“交换操作系统磁盘”选项
- angular - 如何使用 Angular 前端、Spring REST 后端和 CAS (web.xml) 获取 UserPrincipal?
- python - 如何在下一个正则表达式模式匹配之前获取整个字符串?
- c# - 在 WinForm C# 应用程序上播放 WebRTC 流
- r - 删除默认 ggplot 图例并创建自定义图例
- angular - PolarArea 图表的 Apexchart 最大 y 轴值
- java - 需要帮助来使用数组对象显示数组的所有数据(不能使用数组列表)
- java - 整数值同步