【问题标题】:Static vs dynamic linking of modules in AndroidAndroid中模块的静态与动态链接
【发布时间】:2011-05-22 01:53:35
【问题描述】:

为什么 Android 中的大多数模块都静态地喜欢内核,而不是动态加载它们?

【问题讨论】:

    标签: android linux-kernel dynamic-linking static-linking


    【解决方案1】:

    拥有非模块化内核是嵌入式系统的常见做法。与桌面/服务器机器不同,在手机上,硬件不太可能发生变化,它们中的大多数没有 USB 端口,因此无需以模块的形式加载内核功能/硬件支持。

    您知道要使用的文件系统、需要支持的网络接口等,所有这些都可以内置到内核中,而不是动态加载。

    我用来决定哪些内容进入内核以及哪些内容构建为模块的标准 - 如果有您一直需要的特性(如网络接口支持/文件系统支持),则将它们包含在内核中。如果有一些你只在某些时候需要的特性(比如 netfilter 模块)将它们构建为模块

    【讨论】:

    • 感谢您的回复。但是,这种方法的缺点是,由于内核较大,启动时间会增加。将模块放在 sysstem/lib/modules 中并在需要时“insmod”它们不是更好吗?
    • 我已经更新了我的答案以部分回答您的问题,关于启动时间,如果它是支持文件系统的模块,那么无论如何您最终都必须加载它,所以是否真的没有区别您在启动时加载它或作为模块加载它
    • 实际上,您可以使用模块更快地启动嵌入式系统,即使对于您知道最终会需要的东西也是如此。例如,只需构建使显示工作和用户空间运行到内核所需的东西,这样你就可以显示一个 GUI,然后在后台加载你的网络模块等。这使得系统看起来响应更快,即使它没有真正完全启动再长一点。
    猜你喜欢
    • 2012-05-09
    • 2010-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多