# libcruiser **Repository Path**: double_free/libcruiser ## Basic Information - **Project Name**: libcruiser - **Description**: libcruiser source - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 1 - **Created**: 2026-06-30 - **Last Updated**: 2026-07-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # libcruiser #### 介绍 libcruiser库是搭配DevKit精度分析工具使用的,通过精度分析工具对源码插桩,运行二进制前将该库导入环境变量中,生成精度日志。 #### 软件架构 x86、鲲鹏aarch64 #### 注意事项 在使用Intel编译器时,需要源码构建。 确保构建libcruiser时环境中的编译器版本和使用精度分析工具时环境中的编译器版本一致,包括但不限于icc、ifort、gcc等。 #### 编译器自动识别与产物分流 构建脚本会根据 CMake 实际解析使用的编译器自动判定编译器家族,并将产物放到对应的子目录中,无需用户手动指定。 判定依据为 CMake 配置阶段生成的缓存文件 `build/CMakeCache.txt` 中的 `CMAKE_CXX_COMPILER` 变量。脚本会从中提取实际使用的编译器路径,并调用其 `--version` 进行家族识别,识别优先级与对应输出目录如下: | 优先级 | 编译器家族 | 识别关键字 | 库产物目录 | .mod 文件目录 | |--------|-----------|-----------|-----------|--------------| | 1 | BiSheng (clang/clang++/flang) | `BiSheng` | `bisheng_lib` | `bisheng_correct_mods` | | 2 | GNU (gcc/g++/gfortran) | `GCC` | `gnu_lib` | `gnu_correct_mods` | | 3 | 其他(含 Intel 等未识别家族) | — | `user_lib` | `user_correct_mods` | 说明: - BiSheng 优先于 GNU 检测,避免 BiSheng(基于 Clang)的版本输出中可能含 `GCC` 字样时被误判。 - 当使用 Intel 等未识别家族编译器时,产物落入 `user_lib`/`user_correct_mods`。 - 构建开始时会在终端打印识别到的编译器路径、家族及对应输出目录,便于核对。 #### 操作步骤 1、拉取代码 ``` git clone https://gitee.com/double_free/libcruiser.git ``` 2、设置CXX、FC变量 ``` export CXX=icpc export FC=ifort ``` 说明:低版本Intel编译器中CXX是icpc,高版本Intel编译器中CXX是icpx。 若使用 BiSheng 或 GNU 编译器,可对应设置: ``` # BiSheng export CXX=clang++ export FC=flang # GNU export CXX=g++ export FC=gfortran ``` 3、构建项目 方式一: ``` bash build.sh ``` 说明:构建产物在output/libcruiser/目录下。其中头文件位于 `include/`,库文件和 .mod 文件会按上述"编译器自动识别与产物分流"表格落入 `bisheng_lib/`、`gnu_lib/` 或 `user_lib/` 等对应子目录。需要将该目录下所有内容拷贝到/Path-to-DevKit-CLI/advisor/devkitplugins/affinity/tools/compileopt/libcruiser目录下。 方式二: ``` bash build.sh -d "/Path-to-DevKit-CLI/" ``` 说明:使用-d参数指定DevKit命令行所在的路径,会在构建后将产物拷贝到DevKit-CLI目录,无需手动拷贝。