论文复现_从 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 的重用关系。

相关推荐
中杯可乐多加冰3 分钟前
OpenClaw到底能做什么?有什么用?先装这几个实用的Skills
人工智能
千寻girling8 分钟前
一份不可多得的 《 Python 》语言教程
人工智能·后端·python
aircrushin2 小时前
从春晚看分布式实时协同算法与灵巧手工程实现
人工智能·机器人
恋猫de小郭2 小时前
Apple 的 ANE 被挖掘,AI 硬件公开,宣传的 38 TOPS 居然是"数字游戏"?
前端·人工智能·ios
银河系搭车客指南3 小时前
AI Agent 的失忆症:我是怎么给它装上"第二个大脑"的
人工智能
张拭心3 小时前
春节后,有些公司明确要求 AI 经验了
android·前端·人工智能
我的username3 小时前
极致简单的openclaw安装教程
人工智能
小锋java12343 小时前
【技术专题】嵌入模型与Chroma向量数据库 - Chroma 集合操作
人工智能
七月丶3 小时前
别再手动凑 PR 了:这个 AI Skill 会按仓库习惯自动建分支、拆提交、提 PR
人工智能·设计模式·程序员
用户5191495848453 小时前
CVE-2024-10793 WordPress插件权限提升漏洞利用演示
人工智能·aigc