INSTALL_MOD_STRIP

本文介绍在buildko过程中如何通过设置INSTALL_MOD_STRIP=1来移除内核模块的调试信息,以此达到显著减小ko文件大小的目的。具体实现是在内核编译配置中加入--strip-debug选项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如果在build ko的时候加上INSTALL_MOD_STRIP=1的话,则build ko的时候
会加上--strip-debug 这样会让build出的ko size大幅缩小。

具体是在kernel 根目录下面的有对INSTALL_MOD_STRIP=1 进行处理
ifdef INSTALL_MOD_STRIP
ifeq ($(INSTALL_MOD_STRIP),1)
mod_strip_cmd = $(STRIP) --strip-debug
else
mod_strip_cmd = $(STRIP) $(INSTALL_MOD_STRIP)
endif # INSTALL_MOD_STRIP=1
else
mod_strip_cmd = true
endif # INSTALL_MOD_STRIP
export mod_strip_cmd

最终会在scripts/Makefile.modinst中用到mod_strip_cmd,可见build ko的时候会加上mod_strip_cmd

quiet_cmd_modules_install = INSTALL $@
      cmd_modules_install = \
    mkdir -p $(2) ; \
    cp $@ $(2) ; \
    $(mod_strip_cmd) $(2)/$(notdir $@) ; \
    $(mod_sign_cmd) $(2)/$(notdir $@) $(patsubst %,|| true,$(KBUILD_EXTMOD)) && \
$(mod_compress_cmd) $(2)/$(notdir $@)
现在又Kbuild文件如下TOP := $(srctree)/.. CAMERA_ROOT=$(TOP)/vendor/oplus/kernel/camera ifeq ($(DEVICE_MODULES_PATH),) DEVICE_MODULES_PATH = $(srctree) else LINUXINCLUDE := $(DEVCIE_MODULES_INCLUDE) $(LINUXINCLUDE) endif LINUX_INC += -Iinclude/linux \ -Iinclude/linux/drm \ -Iinclude/linux/gunyah \ -Iinclude/linux/gunyah \ -Iinclude CDEFINES += -DANI_LITTLE_BYTE_ENDIAN \ -DANI_LITTLE_BIT_ENDIAN \ -DDOT11F_LITTLE_ENDIAN_HOST \ -DANI_COMPILER_TYPE_GCC \ -DANI_OS_TYPE_ANDROID=6 \ -DPTT_SOCK_SVC_ENABLE \ -Wall\ -Werror\ -D__linux__ KBUILD_CPPFLAGS += $(CDEFINES) ifneq ($(wildcard $(CAMERA_ROOT)/config/camera.conf),) include $(CAMERA_ROOT)/config/camera.conf LINUX_INC += -include $(CAMERA_ROOT)/config/camera.h endif ccflags-y += $(LINUX_INC) ifeq ($(call cc-option-yn, -Wmaybe-uninitialized),y) EXTRA_CFLAGS += -Wmaybe-uninitialized endif ifeq ($(call cc-option-yn, -Wheader-guard),y) EXTRA_CFLAGS += -Wheader-guard endif obj-m += regulator/ obj-m += lens/ obj-m += flashlight/v4l2/ obj-m += thermal/ 还有如下Makefile # SPDX-License-Identifier: GPL-2.0-only # Copyright (C) 2018-2022 Oplus. All rights reserved. ifneq ($(wildcard $(KERNEL_SRC)/android/abi_gki_aarch64.stg),) BOOT_MIXED_BUILD=true endif KBUILD_OPTIONS+= DFT_ROOT=$(KERNEL_SRC)/$(M) KBUILD_OPTIONS += MODNAME?=dft_dlkm ifneq ($(wildcard $(KERNEL_SRC)/$(DEVICE_MODULES_REL_DIR)/Makefile.include),) include $(KERNEL_SRC)/$(DEVICE_MODULES_REL_DIR)/Makefile.include endif all: EXTRA_SYMBOLS += $(extra_symbols) all: $(MAKE) -C $(KERNEL_SRC) M=$(M) modules $(KBUILD_OPTIONS) KBUILD_EXTRA_SYMBOLS="$(EXTRA_SYMBOLS)" modules_install: $(MAKE) INSTALL_MOD_STRIP=1 -C $(KERNEL_SRC) M=$(M) modules_install %: $(MAKE) -C $(KERNEL_SRC) M=$(M) $@ $(KBUILD_OPTIONS) clean: rm -f *.o *.ko *.mod.c *.mod.o *~ .*.cmd Module.symvers rm -rf .tmp_versions 向我逐行解释这两个文件
最新发布
06-18
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值