简要介绍
CMake是一个开源、跨平台的工具系列,旨在于构建、测试和打包软件。CMake使用简单的平台和编译器独立的配置文件控制软件编译过程,并生成可在开发者选择的编译器环境中使用的本机 Makefile 和工作区。CMake工具套件是由Kitware创建的,以响应ITK和VTK等开源项目对强大的跨平台构建环境的需求。
本实践使用鲲鹏DevKit中的应用迁移工具进行软件迁移评估,帮助用户实现软件迁移。
语言:C/C++
开源协议:BSD 3-clause License
建议版本
鲲鹏DevKit工具版本:24.0.RC2
CMake源码包版本:v3.19.8
硬件要求
硬件要求如表1所示。
表1 硬件要求
项目
说明
服务器
TaiShan 200 2280 服务器(等同于其它基于鲲鹏920的服务器)
CPU
鲲鹏920 96核处理器
OS
CentOS 7.6
软件要求
软件要求如表2所示。
表2 软件要求
项目 m版本 获取地址开源软件CMake
CMake V3.19.8
https://github.com/Kitware/CMake/releases/tag/v3.19.8
单击下方链接获取x86源码包。
https://github.com/Kitware/CMake/releases/tag/v3.19.8
图1 下载x86软件包
上传CMake软件包至鲲鹏环境并解压,如图2所示。
图2 上传并解压
图3 解压后的文件目录
执行解压后的二进制文件,结果显示不可执行,如图4所示。
图4 执行解压后的二进制文件
前提条件
已成功安装鲲鹏DevKit,并已安装对应工具。
已安装鲲鹏DevKit插件,并已配置远端服务器。
操作步骤
打开鲲鹏DevKit插件并登录鲲鹏DevKit工具,在左侧导航栏中里选择“应用迁移 > 软件迁移评估”,勾选“分析软件包”,单击“上传”上传待分析的x86 RPM包,目标操作系统选择CentOS 7.6,执行软件包迁移评估。
图1 扫描
查看扫描报告,如图2所示。
图2 扫描报告
单击报告中依赖文件的链接获取依赖文件,并执行以下命令解压安装,如图3所示。
rpm2cpio cmake-2.8.12.2-2.el7.aarch64.rpm | cpio -div
rpm2cpio cmake-gui-2.8.12.2-2.el7.aarch64.rpm | cpio -div
图3 下载并解压依赖文件
解压后如图4所示。
图4 解压后的文件
配置环境变量。
执行如下命令修改“/etc/profile”文件。
vi /etc/profile
在“/etc/profile”文件末尾新增以下字段,完成后按“ESC”,输入“:wq”,按“Enter”保存并退出。
export PATH=/home/usr/bin:$PATH
执行以下命令使新增环境变量生效。
source /etc/profile
验证该二进制文件。
说明
验证过程中如出现因缺失动态链接库导致错误,请参考动态链接库缺失。
图5 验证1
图6 验证2
图7 验证3
图8 验证4
图9 验证5
问题现象描述
在CentOS 7.6.1810操作系统验证二进制文件时,输入命令后返回以下回显信息。
cmake: error while loading shared libraries: libarchive.so.13: cannot open shared object file: No such file or directory
原因分析
操作系统缺少对应的动态链接库文件。
解决方案
执行以下命令进入解压后文件目录,并查看程序运行所需要的共享库,此处以CentOS 7.6.1810操作系统为例。
cd /home/usr/bin
ldd cmake
返回以下信息:
linux-vdso.so.1 => (0x0000ffff9c180000)
libdl.so.2 => /lib64/libdl.so.2 (0x0000ffff9c130000)
libexpat.so.1 => /lib64/libexpat.so.1 (0x0000ffff9c0e0000)
libz.so.1 => /lib64/libz.so.1 (0x0000ffff9c0a0000)
libarchive.so.13 => not found
libcurl.so.4 => /lib64/libcurl.so.4 (0x0000ffff9c010000)
libstdc++.so.6 => /lib64/libstdc++.so.6 (0x0000ffff9bee0000)
libm.so.6 => /lib64/libm.so.6 (0x0000ffff9be20000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x0000ffff9bde0000)
libc.so.6 => /lib64/libc.so.6 (0x0000ffff9bc50000)
…
确认“libarchive.so.13”文件为缺失文件。
执行以下命令查找“libarchive.so.13”所在的软件包。
yum provides */libarchive.so.13
返回以下信息:
Loaded plugins: fastestmirror, priorities
Loading mirror speeds from cached hostfile
- base: ftp.yz.yamagata-u.ac.jp
- extras: ftp.yz.yamagata-u.ac.jp
- updates: ftp.yz.yamagata-u.ac.jp
libarchive-3.1.2-14.el7_7.aarch64 : A library for handling streaming archive formats
Repo : base
Matched from:
Filename : /usr/lib64/libarchive.so.13
执行以下命令安装查询到的软件包即可解决依赖库缺失问题。
yum install -y libarchive-3.1.2-14.el7_7.aarch64