论文复现_从 CONAN 中收集 TPL 数据集

1. 概述

CONAN:Conan是一个用于C++项目的开源包管理工具。 它的主要目标是简化C++项目的依赖关系管理过程,使开发人员能够更轻松地集成、构建和分享C++库。 其中有一些比较独特的功能,例如:版本管理、第三方库管理等。

TPL 数据集:本文首先 CONAN recipe,并从中提取出 1753 个 TPL 名称,这些 TPL 名称将用于后续的 TPL 依赖关系提取。之后,通过网络爬虫收集各 TPL 从在的依赖关系。最后以手动编译的方式,生成 TPL 对应的二进制文件。

2. 二进制文件生成

brunsli:在 GitHub 下载 brunsli 源码​​​​​​,并通过 cmake 进行编译:

%cd '/content/drive/MyDrive/TPL_Download/TPL_CONAN'

! rm -r /brunsli

# 克隆 brunsli 仓库
!git clone https://github.com/google/brunsli.git

# 进入项目目录
%cd brunsli

!git submodule update --init --recursive

!cmake -DCMAKE_BUILD_TYPE=Release -B out

!cmake --build out --config Release

# 退出项目目录
%cd '/content/drive/MyDrive/TPL_Download/TPL_CONAN'

c-blosc:在 GitHub 下载 c-blosc 源码​​​​​​,并通过 cmake 进行编译:

%cd '/content/drive/MyDrive/TPL_Download/TPL_CONAN'

! rm -r /c-blosc

# 克隆 brunsli 仓库
!git clone https://github.com/Blosc/c-blosc.git

# 进入项目目录
%cd c-blosc

!mkdir build

%cd build


!cmake -DCMAKE_INSTALL_PREFIX=your_install_prefix_directory ..

!ccmake ..      # run a curses-based interface

!cmake --build .

!ctest

!cmake --build . --target install

# 退出项目目录
%cd '/content/drive/MyDrive/TPL_Download/TPL_CONAN'

c-blosc2:在 GitHub 下载 c-blosc2 源码​​​​​​,并通过 cmake 进行编译:

%cd '/content/drive/MyDrive/TPL_Download/TPL_CONAN'

! rm -r /c-blosc2

# 克隆 brunsli 仓库
!git clone https://github.com/Blosc/c-blosc2.git

# 进入项目目录
%cd c-blosc2

!mkdir build

%cd build


!cmake -DCMAKE_INSTALL_PREFIX=your_install_prefix_directory ..

!ccmake ..      # run a curses-based interface

!cmake --build .

!ctest

!cmake --build . --target install

# 退出项目目录
%cd '/content/drive/MyDrive/TPL_Download/TPL_CONAN'

HdrHistogram_c:在 GitHub 下载 HdrHistogram_c 源码​​​​​​,并通过 cmake 进行编译:

%cd '/content/drive/MyDrive/TPL_Download/TPL_CONAN'

! rm -r /HdrHistogram_c

# 克隆 brunsli 仓库
!git clone https://github.com/HdrHistogram/HdrHistogram_c.git

# 进入项目目录
%cd HdrHistogram_c

!mkdir build

%cd build

!cmake ..

!make

# 退出项目目录
%cd '/content/drive/MyDrive/TPL_Download/TPL_CONAN'

hexl:在 GitHub 下载 hexl 源码​​​​​​,并通过 cmake 进行编译:

%cd '/content/drive/MyDrive/TPL_Download/TPL_CONAN'

! rm -r /hexl

# 克隆 brunsli 仓库
!git clone https://github.com/intel/hexl.git

# 进入项目目录
%cd hexl

!mkdir build

%cd build

!cmake ..

!make

# 退出项目目录
%cd '/content/drive/MyDrive/TPL_Download/TPL_CONAN'

HiGHS:在 GitHub 下载 HiGHS源码​​​​​​,并通过 cmake 进行编译:

%cd '/content/drive/MyDrive/TPL_Download/TPL_CONAN'

! rm -r /HiGHS

# 克隆 brunsli 仓库
!git clone https://github.com/ERGO-Code/HiGHS.git

# 进入项目目录
%cd HiGHS

!mkdir build

%cd build

!cmake ..

!make

# 退出项目目录
%cd '/content/drive/MyDrive/TPL_Download/TPL_CONAN'

json-schema-validator:在 GitHub 下载 json-schema-validator源码​​​​​​,并通过 cmake 进行编译:

%cd '/content/drive/MyDrive/TPL_Download/TPL_CONAN'

! rm -r /json-schema-validator

# 克隆 brunsli 仓库
!git clone https://github.com/pboettch/json-schema-validator.git

# 进入项目目录
%cd json-schema-validator

!mkdir build

%cd build

!cmake ..

!make

# 退出项目目录
%cd '/content/drive/MyDrive/TPL_Download/TPL_CONAN'

3. 组件识别实验

"c-blosc2": ["lz4/1.9.Z","zlib/1.3.Z","zstd/1.5.Z"]

将 c-blosc2 作为 target,将 zlib 与 zstd 作为candidate,通过 LibAM 进行组件识别。实验结果表明,LibAM 可以有效识别 c-blosc2 的重用关系。

"brunsli": ["brotli/1.0.Z"]

编译后的 brunsli 生成一系列测试文件,如 build_huffman_table_test、c_api_test、context_test 等。通过 IDA Pro 分析这些测试文件发现,这些测试文件与 brotli 存在许多公共函数。因此,将这些测试函数作为 target,将 brotli 作为candidate,通过 LibAM 进行组件识别。实验结果表明,LibAM 可以有效识别 brunsli 的重用关系。

"c-blosc": ["lz4/1.9.Z","snappy/1.1.Z","zlib/1.3.Z","zstd/1.5.Z"]

编译后的 brunsli 生成两个文件,libblosc.so.1.21.7 与 libblosc_testing.so。通过 IDA Pro 分析这些测试文件发现,这些测试文件与 zstd 和 zlib 存在许多公共函数。因此,将这些函数作为 target,将 zstd 和 zlib 作为candidate,通过 LibAM 进行组件识别。实验结果表明,LibAM 可以有效识别 brunsli 的重用关系。

相关推荐
羞儿4 分钟前
【读点论文】Text Detection Forgot About Document OCR,很实用的一个实验对比案例,将科研成果与商业产品进行碰撞
深度学习·ocr·str·std
deephub30 分钟前
优化注意力层提升 Transformer 模型效率:通过改进注意力机制降低机器学习成本
人工智能·深度学习·transformer·大语言模型·注意力机制
耗同学一米八31 分钟前
2024 年河北省职业院校技能大赛网络建设与运维赛项样题四
运维·网络
搏博42 分钟前
神经网络问题之二:梯度爆炸(Gradient Explosion)
人工智能·深度学习·神经网络
KGback1 小时前
【论文解析】HAQ: Hardware-Aware Automated Quantization With Mixed Precision
人工智能
zmd-zk1 小时前
flink学习(2)——wordcount案例
大数据·开发语言·学习·flink
电子手信1 小时前
知识中台在多语言客户中的应用
大数据·人工智能·自然语言处理·数据挖掘·知识图谱
不高明的骗子1 小时前
【深度学习之一】2024最新pytorch+cuda+cudnn下载安装搭建开发环境
人工智能·pytorch·深度学习·cuda
速盾cdn1 小时前
速盾:CDN缓存的工作原理是什么?
网络·安全·web安全