---
title: 编译代码
description: "编译所有源码后生成二进制文件doris_be，使用编译得到的doris_be替换集群BE中的所有doris_be以获取性能加速。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengbds/ecosystemEnable/Doris/kunpengbds_doris_04_0007.html
sourcePath: /source/zh/kunpengbds/ecosystemEnable/Doris/kunpengbds_doris_04_0007.html
indexId: e7dc03fbc154fd76ed752158e9f95c71fb2ed4a9912813ba3e9647c3191f4e6d73
---
# 编译代码

编译所有源码后生成二进制文件doris_be，使用编译得到的doris_be替换集群BE中的所有doris_be以获取性能加速。

1. 进入“/opt/tools/installed/”目录，下载并解压Doris-2.1.2-rc04源码。
  1 2 3 4 cd /opt/tools/installed wget https://github.com/apache/doris/archive/refs/tags/2.1.2-rc04.zip mv 2.1.2-rc04.zip ./doris-2.1.2-rc04.zip unzip doris-2.1.2-rc04.zip

2. 下载并解压预编译第三方库doris-thirdparty-prebuild-arm64.tar.xz，并移动到Doris文件“/thirdparty”目录下。
  1 2 3 4 5 cd /opt/tools/installed wget https://github.com/apache/doris-thirdparty/releases/download/automation/doris-thirdparty-prebuild-arm64.tar.xz tar -xvf doris-thirdparty-prebuild-arm64.tar.xz cp installed/lib64/libjemalloc_doris_pic.a installed/lib64/libjemalloc_arrow.a mv installed /opt/tools/installed/doris-2.1.2-rc04/thirdparty/

3. 下载并解压第三方源码doris-thirdparty-source.tgz，将源码包移动到Doris文件“/thirdparty”目录下并解压bitshuffle-0.5.1.tar.gz。
  1 2 3 4 5 6 cd /opt/tools/installed wget https://github.com/apache/doris-thirdparty/releases/download/automation/doris-thirdparty-source.tgz tar -xzf doris-thirdparty-source.tgz mv src /opt/tools/installed/doris-2.1.2-rc04/thirdparty/ cd /opt/tools/installed/doris-2.1.2-rc04/thirdparty/src tar -xvf bitshuffle-0.5.1.tar.gz

4. 下载Bitshuffle源码和Patch，解压Patch到源码路径，并得到修改后bitshuffle_core.c，用修改后的bitshuffle_core.c替换“thirdparty/src/bitshuffle-0.5.1/src/bitshuffle_core.c”。

  a. 进入“/opt/tools/installed”目录，下载并解压Bitshuffle源码。
    1 2 3 cd /opt/tools/installed wget https://github.com/kiyo-masui/bitshuffle/archive/0.5.1.tar.gz tar -xvf 0.5.1.tar.gz

  b. 下载Bitshuffle Patch并移动到Bitshuffle源码的项目路径下。
    1 2 3 cd /opt/tools/installed/ wget https://gitee.com/kunpengcompute/boostkit-bigdata/releases/download/24.0.RC5-doris_neon_optimization/bitshuffle.patch mv bitshuffle.patch /opt/tools/installed/bitshuffle-0.5.1/

  c. 应用优化后的bitshuffle.patch。
    1 2 cd /opt/tools/installed/bitshuffle-0.5.1/ patch -p1 < bitshuffle.patch

  d. 用修改后的bitshuffle_core.c替换“thirdparty/src/bitshuffle-0.5.1/src/bitshuffle_core.c”。
    1 cp /opt/tools/installed/bitshuffle-0.5.1/src/bitshuffle_core.c /opt/tools/installed/doris-2.1.2-rc04/thirdparty/src/bitshuffle-0.5.1/src/bitshuffle_core.c

5. 修改“thirdparty/build-thirdparty.sh”，使其仅编译Bitshuffle。

  a. 打开文件。
    1 vi /opt/tools/installed/doris-2.1.2-rc04/thirdparty/build-thirdparty.sh

  b. 按“i”进入编辑模式，注释第1796行到1869行，新增1871行package的赋值并将packages赋值为bitshuffle。
    1 packages=(bitshuffle)

  c. 按“Esc”键，输入:wq!，按“Enter”保存并退出编辑。
6. 使用GCC 12编译第三方的Bitshuffle。
  1 2 3 export DORIS_TOOLCHAIN=gcc cd /opt/tools/installed/doris-2.1.2-rc04/thirdparty sh build-thirdparty.sh

7. 使用Clang 17编译BE。

  a. 下载binutils工具链的开发包。
    1 yum install binutils-devel.aarch64

  b. 使用以下命令添加环境变量。
    1 export DORIS_TOOLCHAIN=clang

  c. 打开“build.sh”文件。
    1 2 cd /opt/tools/installed/doris-2.1.2-rc04 vi build.sh

  d. 按“i”进入编辑模式，在文件505行和506行指定子模块版本，使其与Doris主代码兼容。

```
update_submodule "be/src/apache-orc" "apache-orc" "https://github.com/apache/doris-thirdparty/archive/d7975612de8b9711a284af9d7cba5248c49f73b3.tar.gz"
update_submodule "be/src/clucene" "clucene" "https://github.com/apache/doris-thirdparty/archive/ef95e67ae3123409f006072194f742a079603159.tar.gz"
```


  e. 在文件550行增加编译选项--gcc-install-dir=/opt/tools/installed/gcc-12.3.1-2024.05-aarch64-linux/lib64/gcc/aarch64-linux-gnu/12.3.1。
    1 -DEXTRA_CXX_FLAGS="${EXTRA_CXX_FLAGS} --gcc-install-dir=/opt/tools/installed/gcc-12.3.1-2024.05-aarch64-linux/lib64/gcc/aarch64-linux-gnu/12.3.1"

  f. 按“Esc”键，输入:wq!，按“Enter”保存并退出编辑。
  g. 编译BE。
    1 STRIP_DEBUG_INFO=ON sh build.sh --clean --be

8. 得到Clang 17编译后的doris_be。
  BE编译完成后获取二进制文件doris_be。

  1 cd /opt/tools/installed/doris-2.1.2-rc04/be/output/lib
