Dol*_*000 6 linux linux-kernel
我已经有几年没有编译过 Linux 内核了,现在我又开始这样做了,我发现模块默认安装有调试符号,除非INSTALL_MOD_STRIP=1传递给make modules_install,这使得它们如此庞大,以至于我的 initrd 映像增长到了数百个兆字节。
我只是在谷歌INSTALL_MOD_STRIP搜索了相当多的时间后才找到了这个选项,即使这样,也只是在论坛帖子中,人们问为什么他们的模块如此大。
所以我想知道,当我使用预编译内核时,这种变化的原因是什么?是否有一个原因是模块现在默认安装有调试符号(即使二进制发行版仍然将它们剥离)?在内核中使用调试符号似乎相当深奥,而且在安装大小方面显然有很大的缺点。
基本上,我应该只考虑INSTALL_MOD_STRIP作为标准内核编译公式的一部分吗?从 ~2.6.25 开始,构建过程还有其他我应该注意的变化吗?
小智 3
我只是发布相关补丁的日志消息来回答您的问题谁/为什么更改:
commit 2ea038917bbdd51a7ae4a898c6a04641324dd033
Author: Sam Ravnborg <sam@ravnborg.org>
Date: Wed Jan 14 21:38:20 2009 +0100
Revert "kbuild: strip generated symbols from *.ko"
This reverts commit ad7a953c522ceb496611d127e51e278bfe0ff483.
And commit: ("allow stripping of generated symbols under CONFIG_KALLSYMS_ALL")
9bb482476c6c9d1ae033306440c51ceac93ea80c
These stripping patches has caused a set of issues:
1) People have reported compatibility issues with binutils due to
lack of support for `--strip-unneeded-symbols' with objcopy 2.15.92.0.2
Reported by: Wenji
2) ccache and distcc no longer works as expeced
Reported by: Ted, Roland, + others
3) The installed modules increased a lot in size
Reported by: Ted, Davej + others
Reported-by: Wenji Huang <wenji.huang@oracle.com>
Reported-by: "Theodore Ts'o" <tytso@mit.edu>
Reported-by: Dave Jones <davej@redhat.com>
Reported-by: Roland McGrath <roland@redhat.com>
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
Run Code Online (Sandbox Code Playgroud)