---
title: 编译固件
description: "1. 进入用户代码的顶层CMakeLists.txt脚本所在目录。"
url: https://www.hikunpeng.com/document/detail/zh/flexda/devguide/dpak_dev0062.html
sourcePath: /source/zh/flexda/devguide/dpak_dev0062.html
indexId: 9ff422c9fa22dbe88aba8be7de0f5206c0ff13406de7cec6aa47c09e2f9363a944
---
# 编译固件

#### 执行固件编译

1. 进入用户代码的顶层CMakeLists.txt脚本所在目录。

```
cd ovs_project
```


2. 执行如下命令新建build目录并执行cmake命令，以ovs_project的示例代码为例。

```
umask 077
mkdir build
cd build
cmake ..
```


  打印示例如下，表示生成构建文件成功。

```
-- Configuring done
-- Generating done
-- Build files have been written to:
{自定义安装路径}
/flexda_sdk/example/fullnat/build
```


  若非首次编译固件，先删除build目录，再执行步骤2。 执行umask 077以保证cmake/make生成的目录和文件权限不会过大。 build目录不推荐存放在系统目录下（如 /、/usr、/boot等）。

3. 执行make命令，进行固件编译。

```
make
```


  打印示例如下，表示编译成功。

```
[100%] Built target flash_bin
```


  编译过程中的所有日志信息保存在“build/flexdacc_log.txt”中。

4. 进入产物路径，获取固件和对应的configinfo文件。

```
cd ovs_project/bin/flash/hinic_flash_
{板卡类型}
```


  Hinic3_flash.bin：为编译生成的固件。 configinfo：为编译生成的流表配置文件，用于编程框架感知用户定义的流表配置，并在控制面对用户数据进行基础校验。需要在更新固件时同步将此文件拷贝到DPU环境的etc目录下。注意保证此配置文件的完整性，且该文件的权限应为400。


#### 特殊场景说明

以示例代码ovs_example.zip为例（用户需自行准备）。解压示例代码后将example目录存放于“{编程框架自定义安装路径}/flexda_sdk”目录下，再执行上述固件编译任务。以示例代码中的fullnat为例。

```
cd
{编程框架自定义安装路径}
/flexda_sdk/example/fullnat
umask 077
mkdir build
cd build
cmake ..
make
```
