# Linux内核编译与构建指导
- [开发示例1](#section19369206113115)
- [场景1:版本级编译原生方式](#section1025111193220)
- [场景2:单独编译修改后的内核](#section17446652173211)
## 开发示例1
以hi3516dv300开源开发板+ubuntu x86主机开发环境为例。
### 场景1:版本级编译原生方式
使用工程的全量编译命令,编译生成uImage内核镜像
```
./build.sh --product-name Hi3516DV300 # 编译hi3516dv300的uImage内核镜像
```
### 场景2:单独编译修改后的内核
1. 准备工作
1. 按[开发板Patch使用指导](OpenHarmony开发板Patch使用指导.md)打入所需补丁。
2. 准备编译环境,可以使用开源arm clang/gcc编译器。
进入工程主目录配置环境变量:
```
export PATH=`pwd`/prebuilts/clang/host/linux-x86/clang-r353983c/bin:`pwd`/prebuilts/gcc/linux-x86/arm/gcc-linaro-7.5.0-arm-linux-gnueabi/bin/:$PATH # 配置编译环境
MAKE_OPTIONES="ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- CC=clang HOSTCC=clang" # 使用工程项目自带的clang环境
```
2. 修改内核代码或内核config (OpenHarmony提供对应平台的defconfig供参考)。
3. 创建编译目录及生成内核.config。
```
make ${MAKE_OPTIONES} hi3516dv300_emmc_smp_hos_l2_defconfig # 使用自带的默认config 构建内核
```
4. 编译生成对应的内核Image。
```
make ${MAKE_OPTIONES} -j32 uImage # 编译uImage内核镜像
```