免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2267 | 回复: 7
打印 上一主题 下一主题

[其他] Kbuild 问题 -- tristate类型配置项无法设置为 m [复制链接]

论坛徽章:
9
程序设计版块每日发帖之星
日期:2016-02-11 06:20:00程序设计版块每日发帖之星
日期:2016-02-14 06:20:00程序设计版块每日发帖之星
日期:2016-02-14 06:20:0015-16赛季CBA联赛之吉林
日期:2016-03-23 17:25:0015-16赛季CBA联赛之浙江
日期:2016-04-01 08:25:0615-16赛季CBA联赛之山西
日期:2016-04-01 10:09:1915-16赛季CBA联赛之广夏
日期:2016-06-03 15:58:212016科比退役纪念章
日期:2016-07-28 17:42:5215-16赛季CBA联赛之广东
日期:2017-02-20 23:32:43
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2016-10-17 23:44 |只看该作者 |倒序浏览
我在调试 Kbuild 的时候,写了一个 Kconfig 文件,如下:
  1. #
  2. # For a description of the syntax of this configuration file,
  3. # see Documentation/kbuild/kconfig-language.txt
  4. #
  5. mainmenu "Linux/$ARCH $KERNELVERSION Kernel Configuration"

  6. config BOOL_CONFIG
  7.         bool "Use to debug bool"
  8.         help
  9.           You can utilize this symbol to get 'n' or 'y'

  10. config STRING_CONFIG
  11.         string "Use to debug string"
  12.         help
  13.           You can utilize this symbol to get a string

  14. config TRISTATE_CONFIG
  15.         tristate "Use to debug tristate"
  16.         help
  17.           You can utilize this symbol to get a tristate

  18. config HEX_CONFIG
  19.         hex "Use to debug hex"
  20.         help
  21.           You can utilize this symbol to get a hex value

  22. config INT_CONFIG
  23.         int "Use to debug int"
  24.         help
  25.           You can utilize this symbol to get an int value
复制代码
其中有个配置项目为 TRISTATE_CONFIG,其类型为 tristate, 按语法规则,其值可以是: y,m,n
但我使用 make menuconfig 进行配置的时候,该选项只能设置为 y 或者 n,无法设置为 m, 是我的配置写的有问题吗? 如何正确配置一个 tristate 配置为 m?


论坛徽章:
146
2015年亚洲杯之日本
日期:2015-04-28 13:32:012015年亚洲杯之朝鲜
日期:2015-05-06 10:16:442015年亚洲杯之日本
日期:2015-05-06 10:21:342015年亚洲杯纪念徽章
日期:2015-05-13 17:16:442015亚冠之北京国安
日期:2015-05-13 17:18:292015亚冠之鹿岛鹿角
日期:2015-05-13 17:19:062015亚冠之德黑兰石油
日期:2015-05-27 16:47:402015亚冠之塔什干棉农
日期:2015-05-28 15:24:122015亚冠之卡尔希纳萨夫
日期:2015-06-01 13:52:392015亚冠之柏斯波利斯
日期:2015-06-04 17:37:292015亚冠之阿尔纳斯尔
日期:2015-06-16 11:31:202015亚冠之塔什干火车头
日期:2015-06-23 10:12:33
2 [报告]
发表于 2016-10-18 09:43 |只看该作者
帮顶,虽然不会。

论坛徽章:
9
程序设计版块每日发帖之星
日期:2016-02-11 06:20:00程序设计版块每日发帖之星
日期:2016-02-14 06:20:00程序设计版块每日发帖之星
日期:2016-02-14 06:20:0015-16赛季CBA联赛之吉林
日期:2016-03-23 17:25:0015-16赛季CBA联赛之浙江
日期:2016-04-01 08:25:0615-16赛季CBA联赛之山西
日期:2016-04-01 10:09:1915-16赛季CBA联赛之广夏
日期:2016-06-03 15:58:212016科比退役纪念章
日期:2016-07-28 17:42:5215-16赛季CBA联赛之广东
日期:2017-02-20 23:32:43
3 [报告]
发表于 2016-10-18 10:26 |只看该作者
回复 2# 王楠w_n

依旧这么给力

论坛徽章:
9
程序设计版块每日发帖之星
日期:2016-02-11 06:20:00程序设计版块每日发帖之星
日期:2016-02-14 06:20:00程序设计版块每日发帖之星
日期:2016-02-14 06:20:0015-16赛季CBA联赛之吉林
日期:2016-03-23 17:25:0015-16赛季CBA联赛之浙江
日期:2016-04-01 08:25:0615-16赛季CBA联赛之山西
日期:2016-04-01 10:09:1915-16赛季CBA联赛之广夏
日期:2016-06-03 15:58:212016科比退役纪念章
日期:2016-07-28 17:42:5215-16赛季CBA联赛之广东
日期:2017-02-20 23:32:43
4 [报告]
发表于 2016-10-18 11:43 |只看该作者
本帖最后由 Buddy_Zhang1 于 2016-10-18 11:51 编辑

回复 2# 王楠w_n

版主,我建议在内核源码下面再增加一个板块,关于 Kbuild 的,这块对内核开发也很重要。

Kbuild 主要涉及了 Makefile 和 Kconfig 来构建内核的编译系统, 对 Kbuild 的了解有助于加深对内核组织和编译架构的了解。
Kbuild 内容涉及很广,包括 Kconfig 解析, .config 的生成过程,以及 Makefile 对各层目录的组织方式等,
涉及 C 等多种脚本语言。

希望版主能在内核源码板块下开一个新的话题来讨论这些问题。

论坛徽章:
146
2015年亚洲杯之日本
日期:2015-04-28 13:32:012015年亚洲杯之朝鲜
日期:2015-05-06 10:16:442015年亚洲杯之日本
日期:2015-05-06 10:21:342015年亚洲杯纪念徽章
日期:2015-05-13 17:16:442015亚冠之北京国安
日期:2015-05-13 17:18:292015亚冠之鹿岛鹿角
日期:2015-05-13 17:19:062015亚冠之德黑兰石油
日期:2015-05-27 16:47:402015亚冠之塔什干棉农
日期:2015-05-28 15:24:122015亚冠之卡尔希纳萨夫
日期:2015-06-01 13:52:392015亚冠之柏斯波利斯
日期:2015-06-04 17:37:292015亚冠之阿尔纳斯尔
日期:2015-06-16 11:31:202015亚冠之塔什干火车头
日期:2015-06-23 10:12:33
5 [报告]
发表于 2016-10-18 13:00 |只看该作者
回复 4# Buddy_Zhang1

好的,我跟本版版主商议下,有时间出个这方面的话题,大家一块讨论下

论坛徽章:
1
15-16赛季CBA联赛之新疆
日期:2017-03-09 12:33:45
6 [报告]
发表于 2016-10-18 23:42 |只看该作者
  1. #
  2. # For a description of the syntax of this configuration file,
  3. # see Documentation/kbuild/kconfig-language.txt
  4. #
  5. mainmenu "Linux Kernel Configuration"

  6. menuconfig MODULES
  7.     bool "Enable loadable module support"
  8.     option modules
  9.     help
  10.       Kernel modules are small pieces of compiled code which can
  11.       be inserted in the running kernel, rather than being
  12.       permanently built into the kernel.  You use the "modprobe"
  13.       tool to add (and sometimes remove) them.  If you say Y here,
  14.       many parts of the kernel can be built as modules (by
  15.       answering M instead of Y where indicated): this is most
  16.       useful for infrequently used options which are not required
  17.       for booting.  For more information, see the man pages for
  18.       modprobe, lsmod, modinfo, insmod and rmmod.


  19. config BOOL_CONFIG
  20.         bool "Use to debug bool"
  21.         help
  22.           You can utilize this symbol to get 'n' or 'y'

  23. config STRING_CONFIG
  24.         string "Use to debug string"
  25.         help
  26.           You can utilize this symbol to get a string

  27. config TRISTATE_CONFIG
  28.         tristate "state with tri"
  29.         help
  30.           You can utilize this symbol to get a tristate

  31. config HEX_CONFIG
  32.         hex "Use to debug hex"
  33.         help
  34.           You can utilize this symbol to get a hex value

  35. config INT_CONFIG
  36.         int "Use to debug int"
  37.         help
  38.           You can utilize this symbol to get an int value
复制代码

回复 1# Buddy_Zhang1
因为 tristate要依赖于MODULES这个编译选项,所以,你的原来的代码不成功,而加入了新的,可以成功运行了。

论坛徽章:
9
程序设计版块每日发帖之星
日期:2016-02-11 06:20:00程序设计版块每日发帖之星
日期:2016-02-14 06:20:00程序设计版块每日发帖之星
日期:2016-02-14 06:20:0015-16赛季CBA联赛之吉林
日期:2016-03-23 17:25:0015-16赛季CBA联赛之浙江
日期:2016-04-01 08:25:0615-16赛季CBA联赛之山西
日期:2016-04-01 10:09:1915-16赛季CBA联赛之广夏
日期:2016-06-03 15:58:212016科比退役纪念章
日期:2016-07-28 17:42:5215-16赛季CBA联赛之广东
日期:2017-02-20 23:32:43
7 [报告]
发表于 2016-10-18 23:52 |只看该作者
回复 6# jeppeter

非常谢谢你的帮助
经过你的建议,我的运行结果如下:


生成的 .config 如下


根据你提供的样板,我继续调试 Kbuild 系统,发现这样做的原因。

再次感谢!!!

论坛徽章:
20
程序设计版块每日发帖之星
日期:2015-08-17 06:20:00程序设计版块每日发帖之星
日期:2016-07-16 06:20:00程序设计版块每日发帖之星
日期:2016-07-18 06:20:00每日论坛发贴之星
日期:2016-07-18 06:20:00黑曼巴
日期:2016-12-26 16:00:3215-16赛季CBA联赛之江苏
日期:2017-06-26 11:05:5615-16赛季CBA联赛之上海
日期:2017-07-21 18:12:5015-16赛季CBA联赛之青岛
日期:2017-09-04 17:32:0515-16赛季CBA联赛之吉林
日期:2018-03-26 10:02:16程序设计版块每日发帖之星
日期:2016-07-15 06:20:0015-16赛季CBA联赛之江苏
日期:2016-07-07 18:37:512015亚冠之萨济拖拉机
日期:2015-08-17 12:21:08
8 [报告]
发表于 2016-10-20 19:50 |只看该作者
不知道是不是下面这句话的作用
@scripts/kconfig/menu.c::menu_check_dep(struct expr *e)
  1.         case E_SYMBOL:
  2.                 /* change 'm' into 'm' && MODULES */
  3.                 if (e->left.sym == &symbol_mod)
  4.                         return expr_alloc_and(e, expr_alloc_symbol(modules_sym));
复制代码


您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP