如何在kernel中预置obj文件 ,将编译的驱动文件xxx.c用xxx.o替代编译

如何在kernel中预置obj文件 即要将编译的驱动文件xxx.c用xxx.o替代编译

下面介绍的这个是最通用的方法:
我用RK的drm显示驱动路径为kernel\drivers\gpu\drm\panel\panel-simple.c为例
1 先正常编译出panel-simple.o文件
在这里插入图片描述
2 将panel-simple.o重新命名为panel-simple.o_shipped,并分别放在新建的user和eng文件夹中,同时在eng和user文件夹中增加一个Makefile文件,注:user和eng文件下的panel-simple.o_shipped和Makefile文件是一样的
在这里插入图片描述
注:user和eng目录下的panel-simple.o_shipped和Makefile文件是一样的
在这里插入图片描述
3 最后增加相关的编译规则 Makefile文件就可以了
1)我们先修改panel-simple.c所在目录下的Makeflie文件,然后在该目录下新建一个文件夹,我这里自定义文件名字是elink_led,如下图所示:

要修改的makefile文件
在这里插入图片描述
路径为kernel/drivers/gpu/drm/panel/Makefile文件 修改如下:

zqb@build-server-99:~/work104/3399/work2/3399-Android-9.0/kernel$ git diff drivers/gpu/drm/panel/Makefile
diff --git a/drivers/gpu/drm/panel/Makefile b/drivers/gpu/drm/panel/Makefile
old mode 100644
new mode 100755
index d0f016d..0f230b3
--- a/drivers/gpu/drm/panel/Makefile
+++ b/drivers/gpu/drm/panel/Makefile
@@ -1,5 +1,8 @@
-obj-$(CONFIG_DRM_PANEL_SIMPLE) += panel-simple.o
+#obj-$(CONFIG_DRM_PANEL_SIMPLE) += panel-simple.o
 obj-$(CONFIG_DRM_PANEL_LG_LG4573) += panel-lg-lg4573.o
 obj-$(CONFIG_DRM_PANEL_SAMSUNG_LD9040) += panel-samsung-ld9040.o
 obj-$(CONFIG_DRM_PANEL_SAMSUNG_S6E8AA0) += panel-samsung-s6e8aa0.o
 obj-$(CONFIG_DRM_PANEL_SHARP_LQ101R1SX01) += panel-sharp-lq101r1sx01.o
+ifeq ($(CONFIG_DRM_PANEL_SIMPLE),y)
+     obj-y += elink_led/
+endif

在这里插入图片描述
elink_led目录
在这里插入图片描述
**2)在自定义elink_led文件夹下增加下面的编译规则 **
在这里插入图片描述
路径为kernel/driver/gpu/drm/panel/elink_led/Makefile文件内容如下:
在这里插入图片描述
3) 在user和eng目录增加一条编译规则Makefile文件,注:user和eng目录下的Makefile和panel-simple.o_shipped文件是一模一样的
在这里插入图片描述

user和eng目录下的Makeflie文件内容如下:

在这里插入图片描述

4)最终编译可以看到在user目录下panel-simple.o_shipped成功编译出我们想要的panel-simple.o文件,因为我编的是TARGET_BUILD_VARIANT=userdebug版本所以会在user目录下编译 , 这是由于elink_led目录下的这条编译规则

ifeq ($(TARGET_BUILD_VARIANT),eng)
obj-y += eng/
else
obj-y += user/
endif

编译出来的panel-simple.o文件
在这里插入图片描述

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值