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

news2024/9/20 8:00:04

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 的重用关系。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2041551.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2.1 MySQL概述

欢迎来到我的博客,很高兴能够在这里和您见面!欢迎订阅相关专栏: 工💗重💗hao💗:野老杂谈 ⭐️ 全网最全IT互联网公司面试宝典:收集整理全网各大IT互联网公司技术、项目、HR面试真题.…

多媒体技术及应用课程思政网站

摘 要 在Internet高速发展的今天,我们生活的各个领域都涉及到计算机的应用,其中包括多媒体技术及应用课程思政网站的网络应用,在外国多媒体技术及应用课程思政已经是很普遍的方式,不过国内的多媒体技术及应用课程思政可能还处于起…

【MIT-BEVFusion代码解读】第二篇:LiDAR的encoder部分

文章目录 1. Voxelization2. backbone2.1 稀疏卷积介绍2.2 SparseEncoder(1)输入输出及参数说明(2)流程 BEVFusion相关的其它文章链接: 【论文阅读】ICRA 2023|BEVFusion:Multi-Task Multi-Sensor Fusion w…

VPN远程同时连接:IPsec站点到站点方式及L2TPoverIPsecVPN方式

一、实验目的及拓扑 实验目的:企业总部与分支通过IPsecVPN建立点对点连接,移动端通过L2TP方式与企业总部连接 二、基本配置 1、如图所示配置接口地址 2、总部接口区域配置 [FW1]dis zone local priority is 100 interface of the zone is (0): # …

【数值计算方法】常微分方程初值问题的数值解法

常微分方程初边值问题数值解 第九章 1. 引言 微分方程 :含有未知函数及其导数或微分的等式; 除了少数特殊类型的微分方程能用解析方法求得精确解外 , 多数情况找不到解的解析表达式 本章研究两类常微分问题: 一阶常微分方程的初值问题 ; 两阶常微分方程边值问题 一…

C#小结:如何在VS2022中使用菜单栏中的Git管理代码

目录 第一部分:基础操作 第一步,登录官网,设置好邮箱,然后右上角新建仓库 第二步,提交代码到远程仓库中 第三步,查看和比对自己修改的内容 第四步,查看该项目所有提交历史记录 第五步&…

LAMM: Label Alignment for Multi-Modal Prompt Learning

系列论文研读目录 文章目录 系列论文研读目录文章题目含义AbstractIntroductionRelated WorkVision Language ModelsPrompt Learning MethodologyPreliminaries of CLIPLabel AlignmentHierarchical Loss 分层损失Parameter Space 参数空间Feature Space 特征空间Logits Space …

CSP-CCF 202009-1 检测点查询

一、问题描述 二、解答 提醒:本题不宜开方,距离间的比较用平方来比较更好 思路:使用三次for循环,逐一找到最小、第二小、第三小 注:这里用到了limits.h头文件,里面包含了int的最大值INT_MAX #include&l…

搭建企业博客:塑造品牌可信度与优化SEO的利器

引言 在数字化时代,信息的传播速度超乎想象,企业如何在这个信息爆炸的环境中脱颖而出,成为连接消费者、塑造品牌形象的关键。企业博客,作为一种低成本、高效率的营销与沟通工具,正逐渐成为企业策略中不可或缺的一环。…

阅读台灯什么品牌好?不良商家最常用的四大阅读台灯套路,需警惕

阅读台灯什么品牌好?市场上的护眼台灯种类繁多,众多选择中不乏以低价吸引消费者的产品,这也导致了部分家长对于护眼台灯的价值产生了质疑,认为它们不过是不必要的开销。确实,一些低质的护眼灯不仅使用了劣质材料&#…

利用minikube部署k8s集群并部署lnmp服务

部署minikube 参考官网进行安装部署 利用minikube部署k8s集群 1. 部署k8s集群 minikube start k8s集群部署lnmp 1. 将如下内容存储为lnmp.yaml文件 --- apiVersion: v1 kind: Namespace metadata: name: lnmp --- apiVersion: v1 kind: PersistentVolumeClaim metadata: na…

请注意,这是第一届程序化售卖广告的奥运会

作者:刀客doc 巴黎奥运会收官了。很多人在谈郑钦文的商业价值、哪个品牌押中了奥运冠军时,却忽略了一个新闻: 这是第一届程序化售卖广告的奥运会:NBC环球通过旗下的流媒体平台 Peacock,以程序化方式销售巴黎奥运会期…

基于java的私人牙科诊所管理系统

文章目录 项目介绍主要功能截图:部分代码展示设计总结项目获取方式🍅 作者主页:超级无敌暴龙战士塔塔开 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 🍅文末获取源码联系🍅 项目介绍 基于java的私人牙科诊所管理系统,java项…

文心一言 VS 讯飞星火 VS chatgpt (325)-- 算法导论22.5 1题

一、如果在图G中加入一条新的边,G中的强连通分量的数量会发生怎样的变化?如果要写代码,请用go语言。 文心一言: 在图G中加入一条新的边,其对强连通分量(Strongly Connected Components, SCCs)…

海量数据处理商用短链接生成器平台 - 1

第一章 海量数据处理商用短链接生成器平台介绍 第1集 什么是短链接生成器 短链接生成器是一种工具,可以将较长的链接转换成较短的链接。这种工具在许多场景中都很有用,包括营销、社交媒体分享和数据报告等。以下是一些关于短链接生成器的优点和作用&…

VS实用调试技巧(程序员的必备技能)

调试的重要性 在我们写代码的时候,如果程序出现了bug,那么下一步就是找到bug并修复bug!而这个找问题的过程就被称为调试(英文叫debug,消灭bug的意思)。 调试能观察到程序内部执行的细节,可以增加程序员对…

5大低代码开源平台案例研究

在当今快速发展的数字化时代,企业面临着越来越复杂的技术挑战和市场竞争。为了保持竞争力并加速业务创新,许多公司正在转向低代码开源平台。然而,选择合适的低代码平台并将其成功实施,依然是一个挑战。 本文将深入探讨五个成功案…

OpenAI gym: How to get pixels in CartPole-v0

题意:OpenAI Gym:如何在 CartPole-v0 中获取像素? 问题背景: I would like to access the raw pixels in the OpenAI gym CartPole-v0 environment without opening a render window. How do I do this? 我想在 OpenAI Gym 的 …

RAC11G场景下OLR文件丢失导致节点GI无法启动

环境说明 RHEL7.911.2.0.4 RAC,双节点。 问题描述 巡检发现节点2的GI无法启动,发现是olr文件丢失导致。 问题复现 故意把OLR删掉,重启后发现GI无法启动 查看/etc/oracle/olr.loc --查看/etc/oracle/olr.loc 该文件记录有olr文件位置和…

密探 -- 渗透测试工具 v1.14 版

1.如何运行 在jdk8环境下(在jdk8以上的高版本请参考常见问题1的处理方案)运行以下语句运行: java -jar mitan-jar-with-dependencies.jar 若不想输入这么长太长语句,可以通过以下脚本的方式启动: Mac/Linux 环境下,…