焦作网站建设策划,镇江网络,科技团队网站,温州建设诚信网站1. 概述
CONAN#xff1a;Conan是一个用于C项目的开源包管理工具。 它的主要目标是简化C项目的依赖关系管理过程#xff0c;使开发人员能够更轻松地集成、构建和分享C库。 其中有一些比较独特的功能#xff0c;例如#xff1a;版本管理、第三方库管理等。
TPL 数据集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_TYPERelease -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_PREFIXyour_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_PREFIXyour_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 的重用关系。