ARM机器(Oracle Linux / Redhat/ ...)上如何编译 CatBoost

最近有客户需要用到ARM CPU机器,但ARM上没有现成的catboost链接库可用(libcatboostmodel.so),需要自己编译。客户根据指导文档,自己折腾了很长时间,也没法编译出来。

直接根据指导文档去编译,肯定是没法通过的。这里记录一下我编译的过程:


安装Git

安装Git是为了从github上下载源代码。

sudo yum install git


下载源码

git clone https://github.com/catboost/catboost.git


安装CMake

wget https://github.com/Kitware/CMake/releases/download/v3.26.2/cmake-3.26.2-linux-aarch64.sh

然后运行
cmake-3.26.2-linux-aarch64.sh,

并将 安装后CMake的bin目录加到环境变量 PATH 中,如

export $PATH=${CMake Install Dir}/bin:$PATH


安装Java8

sudo yum install java-1.8.0-openjdk-devel -y

并设置JAVA_HOME环境变量和PATH环境变量,如

export JAVA_HOME= /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.362.b09-2.0.1.el9_1.aarch64

export PATH=$JAVA_HOME/bin:$PATH


安装Python包管理工具pip

sudo yum install pip


安装依赖包管理器conan

pip install -v "conan==1.59.0"


安装编译器clang

sudo yum install clang -y

安装一些工具包

sudo yum groupinstall 'Development Tools'

sudo yum install -y make gcc gcc-c++ python3-devel python3-numpy

pip install pandas


安装perl

sudo yum install perl


安装链接器lld

sudo yum install lld


安装构建工具ninja

pip install ninja


指定编译器

export CC=/usr/bin/clang

export CXX=/usr/bin/clang++


修改CMakeLists.txt

新增如下图中的参数项



编译

cmake ./ -B ./build_dir -G "Ninja" -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=.//build/toolchains/clang.toolchain

ninja -C ./build_dir catboost catboostmodel catboostmodel_static catboost_train_interface

原文链接:,转发请注明来源!