尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
如何在Android系统上单编ko?
文章目录一、先了解编译驱动需要什么二、配置makefile1、在Android系统编译LOG上找到编译器信息一般都会打印出来2、基于源MK构造 可独立运行的makefile3、进入docker在此makefile目录下敲make4、最后根据项目不同 动态调整三、源MK一、先了解编译驱动需要什么1、完整编译kernel的环境驱动编译需要依赖kernel的生成物2、编译器及编译选项3、将所需环境变量配置在当前mk里注意只适用于ko模块编译二、配置makefile1、在Android系统编译LOG上找到编译器信息一般都会打印出来如下 [2025-03-06T15:17:09.378Z] make -C /home/code/android/kernel/5.15_14 ARCHarm CROSS_COMPILE/home/code/android/prebuilts/mtk_toolchain/gcc-arm-linux-gnu-5.5.0-ubuntu/x86_64/bin/arm-linux-gnueabi- LOADADDR0x20008000 NM/home/code/android/kernel/build-master/prebuilts/clang/host/linux-x86/clang-r487747c/bin/llvm-nm AR/home/code/android/kernel/build-master/prebuilts/clang/host/linux-x86/clang-r487747c/bin/llvm-ar LD/home/code/android/kernel/build-master/prebuilts/clang/host/linux-x86/clang-r487747c/bin/ld.lld OBJDUMP/home/code/android/kernel/build-master/prebuilts/clang/host/linux-x86/clang-r487747c/bin/llvm-objdump OBJCOPY/home/code/android/kernel/build-master/prebuilts/clang/host/linux-x86/clang-r487747c/bin/llvm-objcopy LLVM1 LLVM_IAS1 CC/home/code/android/kernel/build-master/prebuilts/clang/host/linux-x86/clang-r487747c/bin/clang O/home/code/android/out/target/product/mt9633/obj/KERNEL_OBJ/5.15_14 BUILD_NUMBER mtk_dtv_platformmt5873 olddefconfig [2025-03-06T15:17:09.378Z] make[2]: Entering directory /home/code/android/kernel/5.15_14 [2025-03-06T15:17:09.378Z] make[3]: Entering directory /home/code/android/out/target/product/mt9633/obj/KERNEL_OBJ/5.15_142、基于源MK构造 可独立运行的makefile1) ccflags-y -DANDROID_PLATFORM KDIR ? /home/builder/code/android/out/target/product/mt9633/obj/KERNEL_OBJ/5.15_14 ARCH ? arm CROSS_COMPILE ? /home/code/android/prebuilts/mtk_toolchain/gcc-arm-linux-gnu-5.5.0-ubuntu/x86_64/bin/arm-linux-gnueabi- OTHER_PARAMS ? LOADADDR0x20008000 NM/home/code/android/kernel/build-master/prebuilts/clang/host/linux-x86/clang-r487747c/bin/llvm-nm AR/home/code/android/kernel/build-master/prebuilts/clang/host/linux-x86/clang-r487747c/bin/llvm-ar LD/home/code/android/kernel/build-master/prebuilts/clang/host/linux-x86/clang-r487747c/bin/ld.lld OBJDUMP/home/code/android/kernel/build-master/prebuilts/clang/host/linux-x86/clang-r487747c/bin/llvm-objdump OBJCOPY/home/code/android/kernel/build-master/prebuilts/clang/host/linux-x86/clang-r487747c/bin/llvm-objcopy LLVM1 LLVM_IAS1 CC/home/code/android/kernel/build-master/prebuilts/clang/host/linux-x86/clang-r487747c/bin/clang 2) all: modules modules: make -C $(KDIR) M$(PWD) ARCH$(ARCH) CROSS_COMPILE$(CROSS_COMPILE) $(OTHER_PARAMS) modules $(CROSS_COMPILE)strip --strip-debug aic8800_fdrv/aic8800_fdrv.ko $(CROSS_COMPILE)strip --strip-unneeded aic8800_fdrv/aic8800_fdrv.ko $(CROSS_COMPILE)strip --strip-debug aic_load_fw/aic_load_fw.ko $(CROSS_COMPILE)strip --strip-unneeded aic_load_fw/aic_load_fw.ko //$(CROSS_COMPILE)strip --strip-debug 裁剪ko去掉冗余信息由于Android系统会统一后处理不会体现在单个模块的mk里需要加上3、进入docker在此makefile目录下敲make4、最后根据项目不同 动态调整三、源MKCONFIG_AIC_LOADFW_SUPPORT : m CONFIG_AIC8800_WLAN_SUPPORT : m obj-$(CONFIG_LOADFW_SUPPORT) load_fw/ obj-$(CONFIG_WLAN_SUPPORT) fdrv/ # Platform support list CONFIG_PLATFORM_ROCKCHIP ? n CONFIG_PLATFORM_ALLWINNER ? n CONFIG_PLATFORM_AMLOGIC ? y CONFIG_PLATFORM_UBUNTU ? n ifeq ($(CONFIG_PLATFORM_ROCKCHIP), y) #KDIR : /home/yaya/E/Rockchip/3229/Android7/RK3229_ANDROID7.1_v1.01_20170914/rk3229_Android7.1_v1.01_xml0914/kernel #ARCH ? arm #CROSS_COMPILE ? /home/yaya/E/Rockchip/3229/Android7/RK3229_ANDROID7.1_v1.01_20170914/rk3229_Android7.1_v1.01_xml0914/prebuilts/gcc/linux-x86/arm/arm-eabi-4.6/bin/arm-eabi- KDIR : /home/yaya/E/Rockchip/3229/Android9/rk3229_android9.0_box/kernel ARCH ? arm CROSS_COMPILE ? /home/yaya/E/Rockchip/3229/Android9/rk3229_android9.0_box/prebuilts/gcc/linux-x86/arm/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf- #KDIR : /home/yaya/E/Rockchip/3399/rk3399-android-10/kernel #ARCH ? arm64 #CROSS_COMPILE ? /home/yaya/E/Rockchip/3399/rk3399-android-10/prebuilts/gcc/linux-x86/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu- ccflags-y -DANDROID_PLATFORM endif ifeq ($(CONFIG_PLATFORM_ALLWINNER), y) KDIR : /home/yaya/E/Allwinner/R818/R818/AndroidQ/lichee/kernel/linux-4.9 ARCH ? arm64 CROSS_COMPILE ? /home/yaya/E/Allwinner/R818/R818/AndroidQ/lichee/out/gcc-linaro-5.3.1-2016.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu- ccflags-y -DANDROID_PLATFORM endif ifeq ($(CONFIG_PLATFORM_AMLOGIC), y) ccflags-y -DANDROID_PLATFORM ARCH : arm CROSS_COMPILE : /home/yaya/D/Workspace/CyberQuantum/JinHaoYue/amls905x3/SDK/20191101-0tt-asop/android9.0/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9/bin/arm-linux-androidkernel- KDIR : /home/yaya/D/Workspace/CyberQuantum/JinHaoYue/amls905x3/SDK/20191101-0tt-asop/android9.0/out/target/product/u202/obj/KERNEL_OBJ/ endif ifeq ($(CONFIG_PLATFORM_UBUNTU), y) KDIR : /lib/modules/$(shell uname -r)/build PWD : $(shell pwd) KVER : $(shell uname -r) MODDESTDIR : /lib/modules/$(KVER)/kernel/drivers/net/wireless/ ARCH ? x86_64 CROSS_COMPILE ? endif all: modules modules: make -C $(KDIR) M$(PWD) ARCH$(ARCH) CROSS_COMPILE$(CROSS_COMPILE) modules install: mkdir -p $(MODDESTDIR) install -p -m 644 load_fw/fw.ko $(MODDESTDIR)/ install -p -m 644 fdrv/fdrv.ko $(MODDESTDIR)/ /sbin/depmod -a ${KVER} uninstall: rm -rfv $(MODDESTDIR)/fw.ko rm -rfv $(MODDESTDIR)/fdrv.ko /sbin/depmod -a ${KVER} clean: cd aic_load_fw/;make clean;cd .. cd aic8800_fdrv/;make clean;cd .. rm -rf modules.order Module.symvers .tmp_versions/
RELATED

相关推荐

Universal Radio Hacker实战:用HackRF-Treasure-Chest分析无线协议

Universal Radio Hacker实战:用HackRF-Treasure-Chest分析无线协议

Universal Radio Hacker实战:用HackRF-Treasure-Chest分析无线协议 【免费下载链接】HackRF-Treasure-Chest HackRF software and captures by everyone and for everyone. Argh matey. 项目地址: https://gitcode.com/gh_mirrors/ha/HackRF-Treasure-Chest …

📅 2026/9/8 5:52:22
matrix-nio vs 其他Matrix库:为什么选择sans I/O架构?

matrix-nio vs 其他Matrix库:为什么选择sans I/O架构?

matrix-nio vs 其他Matrix库:为什么选择sans I/O架构? 【免费下载链接】matrix-nio A Python Matrix client library, designed according to sans I/O (http://sans-io.readthedocs.io/) principles 项目地址: https://gitcode.com/gh_mirrors/ma/mat…

📅 2026/9/18 7:50:32
选择靠谱响应式网站建设代理提升品牌竞争力的秘密指南

选择靠谱响应式网站建设代理提升品牌竞争力的秘密指南

在如今这个移动互联网占据绝对主导的时代,我们不得不面对一个残酷的现实:用户的注意力比黄金还要珍贵,而且极其碎片化。如果你还在犹豫要不要做网站,或者还在纠结是找大公司的广告部还是找外面的自由设计师,那我今天想跟你掏心窝子聊聊“响应式网站建设代理”这个看似专业…

📅 2026/10/4 16:57:44
MORE NEWS

更多资讯

📰

kordoc解析选项详解:OCR·页数·纯文本·HTML表格,17个参数逐个拆解

kordoc解析选项详解:OCR页数纯文本HTML表格,17个参数逐个拆解 【免费下载链接】kordoc 모두 파싱해버리겠다 — HWPHWPXPDFOffice 문서를 Markdown으로. 양식 자동 채우기와 신구대조를 갖춘 CLIMCP 서버 | Convert Korean documents (HWP, HWPX, PDF, O…

📰

自动打包、装机、生成用例、真机回归:AI 测试流水线跑通后,TaoToken 统一 Key 怎么接

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

MRAM+STM32工业断电数据保全实战指南

1. 项目概述:为什么在工业现场非得用 MR25H40CDF 配 STM32F031C6 做数据存储?在工厂产线的PLC柜里、在野外无人值守的环境监测终端里、在高速运转的包装机控制板上,你经常能看到一块指甲盖大小的黑色芯片,旁边贴着“MR25H40CDF”丝…

📰

MR25H40CDF+STM32F031C6工业级高可靠数据存储方案

1. 项目概述:为什么在工业现场非得用 MR25H40CDF 配 STM32F031C6 做数据存储?在工厂产线的 PLC 控制柜里、在风电变流器的散热片背面、在矿井监测终端的金属外壳下,你经常能看到一块指甲盖大小的黑色芯片——它既不是 Flash,也不是…

📰

2026 AI 开发全家桶落地指南:TaoToken 统一 Key 打通 IDE 插件、Agent 与自动化代码审查全链路配置实测

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

AGV与服务机器人主控选型:瑞芯微RK3588/RK3576/RK3568实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬