---
title: 获取源码及编译
description: "本章节主要描述如何在Meta节点上对3FS进行编译。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengsdss/ecosystemEnable/3FS/kunpeng3fs_01_0006.html
sourcePath: /source/zh/kunpengsdss/ecosystemEnable/3FS/kunpeng3fs_01_0006.html
indexId: 6bff5e6fb89c47ad310e7410c87d1794047a4d3cfb9fa0068d47d3bee68682de66
---
# 获取源码及编译

本章节主要描述如何在Meta节点上对3FS进行编译。

1. 设置库路径。

```
export LD_LIBRARY_PATH=/usr/local/lib64:/usr/local/lib:/usr/local:/usr/lib:/usr/lib64:$LD_LIBRARY_PATH
```


2. 下载并编译3FS。

```
yum install git -y
cd /home
git clone https://github.com/deepseek-ai/3fs
cd 3fs
git checkout 497941599c2ed7cefe2878b5c35dbd18f25a0415
git submodule update --init --recursive
./patches/apply.sh
```


3. 参见软件要求下载补丁到3FS的根目录，合入适配补丁到3FS。

```
patch -p1 < openeuler_3fs.patch
cd third_party/folly
patch -p1 < ../../openeuler_3fs_folly.patch
```


  正确合入补丁如下所示。

4. 编译3FS。

```
cd /home/3fs
cmake -S . -B build -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_C_COMPILER=clang -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_EXPORT_COMPILE_COMMANDS=ON
cmake --build build -j
```


5. 检查编译结果。

```
cd build/bin
ls
```


6. 编译USRBIO工具，用于后续原生客户端的fio测试。

  a. 拉取fio的代码，进行编译。

```
cd /home
git clone https://github.com/axboe/fio.git
cd fio
./configure
make
make install
```


  b. 进入“3fs/benchmarks/fio_usrbio”目录下，进行编译。

```
cd /home/3fs/benchmarks/fio_usrbio
make HF3FS_LIB_DIR=${HF3FS_LIB_DIR} HF3FS_INCLUDE_DIR=${HF3FS_INCLUDE_DIR} FIO_SRC_DIR=${FIO_SRC_DIR}
```


其中，涉及路径参数如下：

  - 命令中的${ }里的路径需要根据实际情况替换为具体的路径，例如HF3FS_LIB_DIR=/home/3fs/build/src/lib/api HF3FS_INCLUDE_DIR=/home/3fs/src/lib/api FIO_SRC_DIR=/home/fio
  - HF3FS_LIB_DIR默认路径在“/home/3fs/build/src/lib/api”。
  - HF3FS_INCLUDE_DIR默认路径在“/home/3fs/src/lib/api”。
  - FIO_SRC_DIR默认路径在“fio”主目录（包含config-host.h文件），如"/home/fio"。
编译完成后，最终在“/home/3fs/benchmarks/fio_usrbio”目录下出现hf3fs_usrbio.so文件。
