linux-将内核配置变量映射到模块
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了linux-将内核配置变量映射到模块,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2549字,纯文字阅读大概需要4分钟。
内容图文
![linux-将内核配置变量映射到模块](/upload/InfoBanner/zyjiaocheng/949/ed56e3e5385648379e2ce3efc4c6d45c.jpg)
通常,我如何知道要构建一些.ko文件需要哪些内核配置选项集?
例如,我需要“ xt_conntrack.ko”.有哪些资源可以让我知道在我的内核配置中启用CONFIG_NETFILTER_XT_MATCH_CONNTRACK = m是否必要或什至足以导致生成的.ko文件?如何找到产生内核模块所需的全套kconfig选项?
http://cateee.net/lkddb/web-lkddb/NETFILTER_XT_MATCH_CONNTRACK.html表示它将构建“ xt_conntrack”,但是当我= m及其所有依赖项时,我没有看到它.
另一方面,这里没有可见的kconfig标志集(http://modules.libres.ch/browse/linux/v3.0/x86_64/xt_conntrack/)
解决方法:
How do I find the full set of kconfig options required to yield a kernel module?
通常,确定用于构建内核模块的选项集是复杂的过程.下面描述的步骤可以指导该过程.
1.查找一个Makefile
找到一个构建内核模块的Makefile.该文件位于生成.ko文件的同一目录中;该目录通常与模块源文件的目录重合.此Makefile包含用于构建模块的一行:
obj-${CONFIG_...} := <module_name>.o
例:
该行构建了一个模块xt_conntrack.ko
obj-$(CONFIG_NETFILTER_XT_MATCH_CONNTRACK) += xt_conntrack.o
在文件net / netfilter / Makefile中.
2.确定最终选择
配置选项可能会以多种方式影响构建模块.
>该选项直接用于行中,产生了模块:
obj-${CONFIG_X} := <module_name>.o
意味着应该为要构建的模块设置选项CONFIG_X.
>给定的Makefile有条件地包含在上一个文件中:
obj-${CONFIG_Y} := <dir>/
>模块产生的行由“ if”子句保护:
ifeq ($(CONFIG_F),y)
obj-m := <module_name>.o
endif
另外,警卫队可以保护上层Makefile的包含:
ifeq ($(CONFIG_F),y)
obj-m := <dir>/
endif
例:
模块xt_conntrack取决于CONFIG_NETFILTER_XT_MATCH_CONNTRACK选项中的规则1.
它还取决于CONFIG_NETFILTER选项的规则2,因为外部net / Makefile通过以下方式包含net / netfilter / Makefile:
obj-$(CONFIG_NETFILTER) += netfilter/
3.查找选项的定义并确定其可用性
注意:这是最复杂的步骤,主要是因为该选项的可用性以其他选项表示.建议为此使用现成的工具.例如,make menuconfig工具可能会搜索选项并显示其定义.
每个配置选项都在一个Kconfig文件中定义.
定义确定:
>选件的可用性(可以使用选件时),
>选项的可能值(y / n-布尔值,y / m / n-三态等),
>该选项是否可以由用户设置.
例:
选项NETFILTER_XT_MATCH_CONNTRACK在net / netfilter / Kconfig中定义为
config NETFILTER_XT_MATCH_CONNTRACK
tristate '"conntrack" connection tracking match support'
depends on NF_CONNTRACK
default m if NETFILTER_ADVANCED=n
help
This is a general conntrack match module, a superset of the state match.
It allows matching on additional conntrack information, which is
useful in complex configurations, such as NAT gateways with multiple
internet links or tunnels.
To compile it as a module, choose M here. If unsure, say N.
也就是说,仅当设置了NF_CONNTRACK选项时,该选项才可用(可以设置).
Kconfig文件格式的文档位于Documentation/kbuild/kconfig-language.txt.
内容总结
以上是互联网集市为您收集整理的linux-将内核配置变量映射到模块全部内容,希望文章能够帮你解决linux-将内核配置变量映射到模块所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。