我定期为 Slackware Linux 创建软件包,该过程的一部分是剥离二进制文件,以便它们占用更少的空间。我发现如果我strip --strip-all
(或strip
没有选项)内核模块,它们通常无法插入:
致命:插入 cloop 时出错(/lib/modules/2.6.38.7-smp/kernel/fs/cloop/cloop.ko):模块格式无效
建议对内核模块进行什么级别的剥离?如果我使用--strip-debug
,我是否会删除会对系统性能和/或错误日志记录产生负面影响的调试符号?
答案1
剥离所有符号会删除模块调用的符号的名称。这是行不通的。
strip --strip-debug *.ko
使用(= )剥离调试符号strip -g *.ko
是安全的。如果您运行,内核 makefile 会为您完成此操作make INSTALL_MOD_STRIP=1 modules_install
。
CONFIG_DEBUG_INFO
您可以通过将内核配置为未定义来防止调试符号被插入。
答案2
我相信最安全的方法是strip --strip-unneeded
。