当前位置: 首页 > news >正文

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

相关文章:

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

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

使用Docker将Java项目打包并部署到CentOS服务器的详细教程。

当然,让我们将上述步骤进一步细化,以便更好地理解整个过程。 前提条件 一个Java项目CentOS服务器,并且已安装DockerJava项目可以正常在本地运行具有服务器访问权限 ———————————————————————————————————…...

嘉立创eda布线宽度

https://prodocs.lceda.cn/cn/pcb/route-routing-width/#%E5%B8%83%E7%BA%BF%E5%AE%BD%E5%BA%A6...

硬件面试经典 100 题(31~50 题)

31、多级放大电路的级间耦合方式有哪几种?哪种耦合方式的电路零点偏移最严重?哪种耦合方式可以实现阻抗变换? 有三种耦合方式:直接耦合、阻容耦合、变压器耦合。直接耦合的电路零点漂移最严重,变压器耦合的电路可以实现…...

5G:下一代无线通信技术的全面解析

随着科技的不断进步,移动通信技术也在飞速发展。从2G到4G,我们见证了无线网络的巨大变革,而现在,5G已经悄然来临。作为下一代无线通信技术,5G不仅将带来更快的速度和更低的延迟,还将开启全新的应用场景和商…...

关于refresh_token

前文介绍过jwt的一般使用场景,用户登录成功后获得jwt,其中包含用户相关信息,主要是在前端要用到的属性(比如姓名、应用角色[这个前端后都用得着]等)、在后端要用到的属性(比如登录IP、终端唯一标识&#xf…...

Linux网络:基于OS的网络架构

Linux网络:OS视角下的网络架构 网络分层模型OSI 七层模型TCP/IP 五层模型 协议操作系统与网络网络相关命令ifconfigpingnetstat 本博客将基于操作系统,讲解计算机网络的设计理念,帮助大家理解操作系统与网络之间的关系。 网络分层模型 网络…...

UEC++学习(十六)变量添加中文注释、ui设置中文文本

(一)变量添加中文注释 在C 项目中创建变量,并在蓝图中显示变量的英文名同时附带中文注释,可以使用UPROPERTY 的 ToolTip 元数据属性来实现 UPROPERTY(EditAnywhere, meta (ToolTip "弹夹最大容量"))int32 MagCapacit…...

Redis延迟双删

1、何为延时双删 Redis延迟双删是一种在数据更新操作中确保缓存与数据库数据一致性的策略,通过两次缓存删除操作间隔一段延时来减少数据不一致的问题。 在并发环境下,多个请求同时对同一数据进行读写时,如果没有妥善处理,很容易…...

WO Mic 手机变身免费麦克风

目录 一、主要特点 1.支持多种连接方式 2.应用广泛 3.低延迟 4.简易配置 5.自动连接 6.音频格式 二、软件下载 三、软件安装 四、系统连接 五、测试 直播的时候,上课的时候,会议的时候……突然发现没有麦克风或者电脑麦克风有故障,这可怎么办呢?今天给大家介绍一…...

MQ死信对列

面试题:你们是如何保证消息不丢失的? 1、什么是死信 死信就是消息在特定场景下的一种表现形式,这些场景包括: 1. 消息被拒绝访问,即消费者返回 basicNack 的信号时 或者拒绝basicReject 2. 消费者发生异常&#xff0…...

springboot乡镇小区管理系统-计算机毕业设计源码73685

摘 要 过去使用手工的管理方式对乡镇小区进行管理,造成了管理繁琐、难以维护等问题,如今使用计算机对停车场停车的各项基本信息进行管理,比起手工管理来说既方便又简单,而且具有易于管理、搜索速度快、存储量大等多个优点。将其使…...

基于vue框架的4S店汽车维修保养管理系统28a7y(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。

系统程序文件列表 项目功能:客户,技师,车辆信息,财务,客户维修,维修分配,维修订单,保养预约,保养分配,保养订单,维修费用,保养费用 开题报告内容 基于Vue框架的4S店汽车维修保养管理系统 开题报告 一、项目背景与意义 随着汽车产业的迅猛发展,4S店作…...

小米开放式耳机值得买吗?南卡、小米、漫步者一周横评

​大家好,最近对开放式耳机比较感兴趣,作为一名数码博主以及多年的耳机发烧友,今天想给大家测评一下开放式耳机,这类耳机目前在数码圈非常火热!很多喜欢运动的小伙伴都选择了这款耳机,搭配运动场景听歌&…...

解决oracel锁表问题;SQL 错误 [54] [61000]: ORA-00054: 资源正忙

问题描述; SQL 错误 [54] [61000]: ORA-00054: 资源正忙, 但指定以 NOWAIT 方式获取资源, 或者超时失效 select session_id from v$locked_object;查看这些 session_id 对应的会话的详细信息,包括用户名、机器名、程序等,9596等是select se…...

Jfinal与hibernate-validator实现后台表单

一. pom.xml配置 jfianl maven项目基础上增加 <dependency><groupId>org.hibernate</groupId><artifactId>hibernate-validator</artifactId><version>${hibernate-validator.version}</version></dependency><dependency…...

ansible playbook使用jinja2语法渲染inventory下的主机名和IP到/etc/hosts

1. ansible inventory 下面的 hosts内容如下&#xff1a; [all_host] app1 ansible_host10.2.162.147 app2 ansible_host10.2.162.148 app3 ansible_host10.2.162.149 app4 ansible_host10.2.162.150 app5 ansible_host10.2.162.151[nginx] app12. hosts.j2内容如下 127.0.0…...

张飞硬件1~9电阻篇笔记

电阻有标定值和实际值&#xff0c;关于误差的问题&#xff1a; 精密的电流、电压采样可能会用到1%的精度。如果只是做限流用途的话&#xff0c;用5%就足够。 电阻功率&#xff1a;标定值、额定值、瞬态值&#xff1a; 标定值由封装所决定&#xff0c;例如5W额定值由电路中平…...

探索Golang的微观世界:用net/trace包追踪网络操作

标题&#xff1a;探索Golang的微观世界&#xff1a;用net/trace包追踪网络操作 在Go语言的丰富生态系统中&#xff0c;net/trace包是一个强大的工具&#xff0c;它允许开发者深入网络请求的微观世界&#xff0c;洞察每一次数据的流动和操作的执行。本文将详细探讨如何使用net/…...

Unity开发抖音小游戏广告部分接入

Unity开发抖音小游戏广告部分接入 介绍环境确保开通流量主获取广告位广告部分代码测试如下总结 介绍 最近在使用Unity做抖音小游戏这块的内容&#xff0c;因为要接入广告&#xff0c;所以这里我把我接入广告的部分代码和经验分享一下。 环境确保 根据抖音官方的文档我们是先…...

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...

RestClient

什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端&#xff0c;它允许HTTP与Elasticsearch 集群通信&#xff0c;而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级&#xff…...

Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误

HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误&#xff0c;它们的含义、原因和解决方法都有显著区别。以下是详细对比&#xff1a; 1. HTTP 406 (Not Acceptable) 含义&#xff1a; 客户端请求的内容类型与服务器支持的内容类型不匹…...

理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端

&#x1f31f; 什么是 MCP&#xff1f; 模型控制协议 (MCP) 是一种创新的协议&#xff0c;旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议&#xff0c;它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...

渲染学进阶内容——模型

最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...

WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成

厌倦手动写WordPress文章&#xff1f;AI自动生成&#xff0c;效率提升10倍&#xff01; 支持多语言、自动配图、定时发布&#xff0c;让内容创作更轻松&#xff01; AI内容生成 → 不想每天写文章&#xff1f;AI一键生成高质量内容&#xff01;多语言支持 → 跨境电商必备&am…...

莫兰迪高级灰总结计划简约商务通用PPT模版

莫兰迪高级灰总结计划简约商务通用PPT模版&#xff0c;莫兰迪调色板清新简约工作汇报PPT模版&#xff0c;莫兰迪时尚风极简设计PPT模版&#xff0c;大学生毕业论文答辩PPT模版&#xff0c;莫兰迪配色总结计划简约商务通用PPT模版&#xff0c;莫兰迪商务汇报PPT模版&#xff0c;…...

R 语言科研绘图第 55 期 --- 网络图-聚类

在发表科研论文的过程中&#xff0c;科研绘图是必不可少的&#xff0c;一张好看的图形会是文章很大的加分项。 为了便于使用&#xff0c;本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中&#xff0c;获取方式&#xff1a; R 语言科研绘图模板 --- sciRplothttps://mp.…...

从“安全密码”到测试体系:Gitee Test 赋能关键领域软件质量保障

关键领域软件测试的"安全密码"&#xff1a;Gitee Test如何破解行业痛点 在数字化浪潮席卷全球的今天&#xff0c;软件系统已成为国家关键领域的"神经中枢"。从国防军工到能源电力&#xff0c;从金融交易到交通管控&#xff0c;这些关乎国计民生的关键领域…...

Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement

Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement 1. LAB环境2. L2公告策略2.1 部署Death Star2.2 访问服务2.3 部署L2公告策略2.4 服务宣告 3. 可视化 ARP 流量3.1 部署新服务3.2 准备可视化3.3 再次请求 4. 自动IPAM4.1 IPAM Pool4.2 …...