为什么自己编译的linux内核和驱动比系统本身大很多?

1,配置中调试选项很多(不一定带“调试”二字),位置也比较分散;

2.自带的内核往往要经过长期精心的配置,会比个人十几分钟的配置更全面。

这两个原因影响内核和模块的大小,但影响不大。

编译后的内核模块包含了很多运行时不用的段(编译连接时可能会用到,不是错误),通常在发行版中会被删除,大概就是这个原因。

可以考虑用[strip -S mod_name.ko]来处理内核模块(注意:这里的选项是用大写的S,小写的S或者不写会一起删除符号表,会导致模块无法加载),看看文件是不是变小了(不要这样对内核本身)。

如果上述命令明显减少了文件,可以考虑在编译内核前将环境变量INSTALL_MOD_STRIP定义为1 (number),这样make modules_install之后的所有内核模块都由STRIP处理。