最近有客户需要用到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