---
title: 编译ko模块
description: "Android跟Linux系统通讯依赖于binder和ashmem两个模块，需要编译安装到新内核。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengboostkithistory/230RC2/armnative/kunpengcpskbox_20_0044.html
sourcePath: /source/zh/kunpengboostkithistory/230RC2/armnative/kunpengcpskbox_20_0044.html
indexId: 4c24b953e5a0ceca6626768389ed42f02c51228c610f5d12ec5aec2826542c2078
---
# 编译ko模块

Android跟Linux系统通讯依赖于binder和ashmem两个模块，需要编译安装到新内核。

编译和安装ko模块需要用到两个patch文件，均存放在“patchForKernel/ubuntu_20.04/kernel_5.15.98/ashmem_binder”路径下，具体编译过程请参考下面的步骤。

1. 创建文件夹，存放ashmem源码。
  1 2 3 # cd ~/dependency/patchForKernel/ubuntu_20.04/kernel_5.15.98/ashmem_binder/ # mkdir -p ashmem # chmod -R 700 ashmem

2. 将内核源码目录中“/usr/src/linux-kernel-5.15.98/drivers/staging/android”文件夹下的指定文件复制到1中创建的“ashmem”文件夹下。

```
# cd
~
/dependency/patchForKernel/ubuntu_20.04/kernel_5.15.98/ashmem_binder/ashmem
# cp /usr/src/linux-kernel-5.15.98/drivers/staging/android/ashmem.c ./
# cp /usr/src/linux-kernel-5.15.98/drivers/staging/android/ashmem.h ./
# cp /usr/src/linux-kernel-5.15.98/drivers/staging/android/Makefile ./
# cp -r /usr/src/linux-kernel-5.15.98/drivers/staging/android/uapi ./
```


3. 创建文件夹，存放binder源码。
  1 2 3 4 # cd ~/dependency/patchForKernel/ubuntu_20.04/kernel_5.15.98/ashmem_binder/ # mkdir -p binder # mkdir -p binder/uapi # chmod -R 700 binder

4. 将内核源码目录中“/usr/src/linux-kernel-5.15.98/drivers/android/”文件夹下的指定文件复制到3中建立的“binder”文件夹下。

```
# cd
~
/dependency/patchForKernel/ubuntu_20.04/kernel_5.15.98/ashmem_binder/binder
# cp /usr/src/linux-kernel-5.15.98/drivers/android/binder_alloc.c ./
# cp /usr/src/linux-kernel-5.15.98/drivers/android/binder_alloc.h ./
# cp /usr/src/linux-kernel-5.15.98/drivers/android/binder.c ./
# cp /usr/src/linux-kernel-5.15.98/drivers/android/binder_internal.h ./
# cp /usr/src/linux-kernel-5.15.98/drivers/android/binder_trace.h ./
# cp /usr/src/linux-kernel-5.15.98/drivers/android/Makefile ./
```


5. 将内核源码目录中“/usr/src/linux-kernel-5.15.98/include/uapi/linux/android/”文件夹下的指定文件复制到3中建立的“uapi”文件夹下。
  1 2 # cd ~/dependency/patchForKernel/ubuntu_20.04/kernel_5.15.98/ashmem_binder/binder/uapi # cp /usr/src/linux-kernel-5.15.98/include/uapi/linux/android/binder.h ./

6. 合入ashmem.patch、binder.patch。
  1 2 3 # cd ~/dependency/patchForKernel/ubuntu_20.04/kernel_5.15.98/ashmem_binder/ # patch -p1 < ashmem.patch # patch -p1 < binder.patch

7. 编译ashmem。
  1 2 3 # cd ~/dependency/patchForKernel/ubuntu_20.04/kernel_5.15.98/ashmem_binder/ashmem/ # make KERNEL_SRC=/usr/src/linux-kernel-5.15.98 V=0 M=~/dependency/patchForKernel/ubuntu_20.04/kernel_5.15.98/ashmem_binder/ashmem/ # cp ashmem_linux.ko /lib/modules/5.15.98/kernel/lib/

8. 编译binder。
  1 2 3 # cd ~/dependency/patchForKernel/ubuntu_20.04/kernel_5.15.98/ashmem_binder/binder/ # make KERNEL_SRC=/usr/src/linux-kernel-5.15.98 V=0 M=~/dependency/patchForKernel/ubuntu_20.04/kernel_5.15.98/ashmem_binder/binder/ # cp aosp_binder_linux.ko /lib/modules/5.15.98/kernel/lib/
