.. SPDX-License-Identifier: GPL-2.0 .. include:: ../disclaimer-zh_CN.rst :Original: Documentation/kbuild/kconfig.rst :Translator: 慕冬亮 Dongliang Mu <dzm91@hust.edu.cn> ================ é…ç½®ç›®æ ‡å’Œç¼–è¾‘å™¨ ================ 本文件包å«ä½¿ç”¨ ``make *config`` 的一些帮助。 使用 ``make help`` 列出所有å¯èƒ½çš„é…ç½®ç›®æ ‡ã€‚ xconfig('qconf')ã€menuconfig('mconf')和 nconfig('nconf')程åºä¹ŸåŒ…å« å†…åµŒçš„å¸®åŠ©æ–‡æœ¬ã€‚è¯·åŠ¡å¿…æŸ¥çœ‹è¿™äº›å¸®åŠ©æ–‡æœ¬ä»¥èŽ·å–导航ã€æœç´¢å’Œå…¶ä»–帮助信æ¯ã€‚ gconfig('gconf')程åºçš„帮助文本较少。 é€šç”¨ä¿¡æ¯ ======== æ–°çš„å†…æ ¸ç‰ˆæœ¬é€šå¸¸ä¼šå¼•å…¥æ–°çš„é…置符å·ã€‚æ›´é‡è¦çš„æ˜¯ï¼Œæ–°çš„å†…æ ¸ç‰ˆæœ¬å¯èƒ½ä¼šé‡å‘½åé…置符å·ã€‚ 当这ç§æƒ…况å‘生时,使用之å‰æ£å¸¸å·¥ä½œçš„ .config 文件并è¿è¡Œ "make oldconfig" ä¸ä¸€å®šä¼šç”Ÿæˆä¸€ä¸ªå¯æ£å¸¸å·¥ä½œçš„æ–°å†…æ ¸ï¼Œå› æ¤ï¼Œä½ å¯èƒ½éœ€è¦æŸ¥çœ‹å“ªäº›æ–°çš„å†…æ ¸ç¬¦å·è¢«å¼•å…¥ã€‚ è¦æŸ¥çœ‹æ–°é…置符å·çš„列表,请使用:: cp user/some/old.config .config make listnewconfig é…置程åºå°†åˆ—出所有新é…置符å·ï¼Œæ¯è¡Œä¸€ä¸ªã€‚ æˆ–è€…ï¼Œä½ å¯ä»¥ä½¿ç”¨æš´åŠ›ç ´è§£æ–¹æ³•:: make oldconfig scripts/diffconfig .config.old .config | less 环境å˜é‡ ======== ``*config`` 的环境å˜é‡ï¼š ``KCONFIG_CONFIG`` 该环境å˜é‡å¯ç”¨äºŽæŒ‡å®šä¸€ä¸ªé»˜è®¤çš„å†…æ ¸é…置文件å,以覆盖默认的 ".config"。 ``KCONFIG_DEFCONFIG_LIST`` 该环境å˜é‡æŒ‡å®šäº†ä¸€ä¸ªé…置文件列表,当 .config ä¸å˜åœ¨æ—¶ï¼Œè¿™äº›æ–‡ä»¶å¯ç”¨ä½œåŸºç¡€é…置。 列表ä¸çš„æ¡ç›®ä»¥ç©ºæ ¼åˆ†éš”,åªæœ‰ç¬¬ä¸€ä¸ªå˜åœ¨çš„文件会被使用。 ``KCONFIG_OVERWRITECONFIG`` 如果该环境å˜é‡è¢«è®¾ç½®ï¼Œå½“ .config 是指å‘其他ä½ç½®çš„符å·é“¾æŽ¥æ—¶ï¼ŒKconfig ä¸ä¼š ç ´å符å·é“¾æŽ¥ã€‚ ``KCONFIG_WARN_UNKNOWN_SYMBOLS`` 该环境å˜é‡ä½¿ Kconfig 对é…置输入ä¸æ‰€æœ‰æ— 法识别的符å·å‘出è¦å‘Šã€‚ ``KCONFIG_WERROR`` 如果该环境å˜é‡è¢«è®¾ç½®ï¼ŒKconfig 将所有è¦å‘Šè§†ä¸ºé”™è¯¯ã€‚ ``CONFIG_`` 如果该环境å˜é‡è¢«è®¾ç½®ï¼ŒKconfig 将在ä¿å˜é…置时,为所有符å·æ·»åŠ 其值作为å‰ç¼€ï¼Œ 而ä¸æ˜¯ä½¿ç”¨é»˜è®¤å€¼ã€‚ ``{allyes/allmod/allno/rand}config`` 的环境å˜é‡ï¼š ``KCONFIG_ALLCONFIG`` allyesconfig/allmodconfig/allnoconfig/randconfig 这些å˜ä½“也å¯ä»¥ä½¿ç”¨çŽ¯å¢ƒ å˜é‡ KCONFIG_ALLCONFIG ä½œä¸ºæ ‡å¿—æˆ–åŒ…å«ç”¨æˆ·è¦æ±‚设置为特定值的é…置符å·çš„文件å。 如果 KCONFIG_ALLCONFIG 未指定文件åï¼Œå³ KCONFIG_ALLCONFIG == "" 或 KCONFIG_ALLCONFIG == "1",则 ``make *config`` 将查找å为 "all{yes/mod/no/def/random}.config" 的文件(对应于所使用的 ``*config`` 命令)以强制符å·å€¼ã€‚如果找ä¸åˆ°æ¤æ–‡ä»¶ï¼Œå®ƒä¼šæŸ¥æ‰¾å为 "all.config" çš„æ–‡ä»¶ä»¥åŒ…å« å¼ºåˆ¶å€¼ã€‚ è¿™å¯ä»¥åˆ›å»ºâ€œå¾®åž‹â€é…置(miniconfig)或自定义é…置文件,其ä¸ä»…包å«æ„Ÿå…´è¶£çš„é…置符å·ã€‚ 然åŽï¼Œå†…æ ¸é…置系统将生æˆå®Œæ•´çš„ .config 文件,包括 miniconfig 文件ä¸çš„符å·ã€‚ ``KCONFIG_ALLCONFIG`` 文件包å«è®¸å¤šé¢„设é…置符å·ï¼ˆé€šå¸¸æ˜¯æ‰€æœ‰ç¬¦å·çš„å集)。 这些å˜é‡è®¾ç½®ä»éœ€éµå®ˆæ£å¸¸çš„ä¾èµ–性检查。 示例:: KCONFIG_ALLCONFIG=custom-notebook.config make allnoconfig 或:: KCONFIG_ALLCONFIG=mini.config make allnoconfig 或:: make KCONFIG_ALLCONFIG=mini.config allnoconfig 这些示例将ç¦ç”¨å¤§å¤šæ•°é…置选项(allnoconfig),但å¯ç”¨æˆ–ç¦ç”¨ miniconfig 文件 ä¸æ˜¾å¼åˆ—出的选项。 ``randconfig`` 的环境å˜é‡ï¼š ``KCONFIG_SEED`` å¦‚æžœä½ æƒ³è°ƒè¯• kconfig 解æžå™¨/å‰ç«¯çš„è¡Œä¸ºï¼Œä½ å¯ä»¥å°†æ¤å˜é‡è®¾ç½®æ•´æ•°å€¼ï¼Œç”¨äºŽåˆå§‹åŒ– éšæœºæ•°ç”Ÿæˆå™¨ã€‚如果未设置,将使用当å‰æ—¶é—´ã€‚ ``KCONFIG_PROBABILITY`` 该å˜é‡å¯ç”¨äºŽå€¾æ–œæ¦‚率分布。æ¤å˜é‡å¯ä¸è®¾ç½®æˆ–设置为空,或设置为以下三ç§ä¸åŒæ ¼å¼ï¼š ======================= ================== ===================== KCONFIG_PROBABILITY y:n åˆ†é… y:m:n åˆ†é… ======================= ================== ===================== 未设置或设置为空 50 : 50 33 : 33 : 34 N N : 100-N N/2 : N/2 : 100-N [1] N:M N+M : 100-(N+M) N : M : 100-(N+M) [2] N:M:L N : 100-N M : L : 100-(M+L) ======================= ================== ===================== å…¶ä¸ Nã€M å’Œ L 是范围在 [0,100] 内的整数(以å进制表示),并且需满足: [1] N+M 的范围在 [0,100] 之间 [2] M+L 的范围在 [0,100] 之间 示例:: KCONFIG_PROBABILITY=10 10% 的布尔值将设置为 'y',90% 设置为 'n' 5% 的三æ€å€¼å°†è®¾ç½®ä¸º 'y',5% 设置为 'm',90% 设置为 'n' KCONFIG_PROBABILITY=15:25 40% 的布尔值将设置为 'y',60% 设置为 'n' 15% 的三æ€å€¼å°†è®¾ç½®ä¸º 'y',25% 设置为 'm',60% 设置为 'n' KCONFIG_PROBABILITY=10:15:15 10% 的布尔值将设置为 'y',90% 设置为 'n' 15% 的三æ€å€¼å°†è®¾ç½®ä¸º 'y',15% 设置为 'm',70% 设置为 'n' ``syncconfig`` 的环境å˜é‡ï¼š ``KCONFIG_NOSILENTUPDATE`` 如果该å˜é‡éžç©ºï¼Œå®ƒå°†é˜»æ¢é™é»˜çš„å†…æ ¸é…置更新(需è¦æ˜Žç¡®æ›´æ–°ï¼‰ã€‚ ``KCONFIG_AUTOCONFIG`` 该环境å˜é‡å¯ä»¥è®¾ç½®ä¸º "auto.conf" 文件的路径和å称。默认值为 "include/config/auto.conf"。 ``KCONFIG_AUTOHEADER`` 该环境å˜é‡å¯ä»¥è®¾ç½®ä¸º "autoconf.h" 头文件的路径和å称。默认值为 "include/generated/autoconf.h"。 menuconfig ========== 在 menuconfig ä¸æœç´¢ï¼š æœç´¢åŠŸèƒ½ä¼šæœç´¢å†…æ ¸é…置符å·åç§°ï¼Œå› æ¤ä½ 必须知é“欲æœç´¢å†…容的大致å称。 示例:: /hotplug è¿™ä¼šåˆ—å‡ºæ‰€æœ‰åŒ…å« "hotplug" çš„é…置符å·ï¼Œä¾‹å¦‚,HOTPLUG_CPU, MEMORY_HOTPLUG。 若需è¦æœç´¢å¸®åŠ©ï¼Œè¾“å…¥ / åŽè·Ÿ TAB-TAB(高亮显示 <Help>)并按回车键。 è¿™è¯´æ˜Žä½ è¿˜å¯ä»¥åœ¨æœç´¢å—符串ä¸ä½¿ç”¨æ£åˆ™è¡¨è¾¾å¼ï¼ˆregexï¼‰ï¼Œæ‰€ä»¥å¦‚æžœä½ å¯¹ MEMORY_HOTPLUG ä¸æ„Ÿå…´è¶£ï¼Œä½ å¯ä»¥å°è¯•:: /^hotplug 在æœç´¢æ—¶ï¼Œç¬¦å·å°†æŒ‰ä»¥ä¸‹é¡ºåºæŽ’åºï¼š - 首先,完全匹é…的符å·ï¼ŒæŒ‰å—æ¯é¡ºåºæŽ’列(完全匹é…是指æœç´¢ä¸Žç¬¦å·å称完全匹é…); - 然åŽæ˜¯å…¶ä»–匹é…项,按å—æ¯é¡ºåºæŽ’列。 例如,^ATH.K 匹é…:: ATH5K ATH9K ATH5K_AHB ATH5K_DEBUG [...] ATH6KL ATH6KL_DEBUG [...] ATH9K_AHB ATH9K_BTCOEX_SUPPORT ATH9K_COMMON [...] å…¶ä¸åªæœ‰ ATH5K å’Œ ATH9K 完全匹é…ï¼Œå› æ¤å®ƒä»¬æŽ’在å‰é¢ï¼ˆæŒ‰å—æ¯é¡ºåºï¼‰ï¼Œ 接下æ¥æ˜¯å…¶ä»–符å·ï¼ŒåŒæ ·æŒ‰å—æ¯é¡ºåºæŽ’列。 在æ¤èœå•ä¸ï¼ŒæŒ‰ä¸‹ä»¥ (#) 为å‰ç¼€çš„键将直接跳转到该ä½ç½®ã€‚退出æ¤æ–°èœå•åŽï¼Œ ä½ å°†è¿”å›žå½“å‰çš„æœç´¢ç»“果。 'menuconfig' 的用户界é¢é€‰é¡¹ï¼š ``MENUCONFIG_COLOR`` å¯ä»¥ä½¿ç”¨å˜é‡ MENUCONFIG_COLOR 选择ä¸åŒçš„é…色主题。使用以下命令选择主题:: make MENUCONFIG_COLOR=<theme> menuconfig å¯ç”¨çš„主题有:: - mono => 选择适åˆå•è‰²æ˜¾ç¤ºå™¨çš„颜色 - blackbg => 选择具有黑色背景的é…色方案 - classic => ç»å…¸å¤–观,è“色背景 - bluetitle => ç»å…¸å¤–观的 LCD å‹å¥½ç‰ˆæœ¬ï¼ˆé»˜è®¤ï¼‰ ``MENUCONFIG_MODE`` æ¤æ¨¡å¼ä¼šå°†æ‰€æœ‰åèœå•æ˜¾ç¤ºä¸ºä¸€ä¸ªå¤§æ ‘状结构。 示例:: make MENUCONFIG_MODE=single_menu menuconfig nconfig ======= nconfig 是一个替代的基于文本的é…置工具。它在终端(窗å£ï¼‰åº•éƒ¨åˆ—出功能键,用于执行 命令。除éžä½ 在数æ®è¾“入窗å£ä¸ï¼Œå¦åˆ™ä½ 也å¯ä»¥ç›´æŽ¥ä½¿ç”¨ç›¸åº”çš„æ•°å—é”®æ¥æ‰§è¡Œå‘½ä»¤ã€‚ä¾‹å¦‚ï¼Œä½ å¯ä»¥ç›´æŽ¥æŒ‰ 6ï¼Œè€Œéž F6 进行ä¿å˜ã€‚ 使用 F1 获å–全局帮助或 F3 打开简çŸå¸®åŠ©èœå•ã€‚ 在 nconfig ä¸æœç´¢ï¼š ä½ å¯ä»¥åœ¨èœå•é¡¹â€œæ示â€å—符串ä¸æˆ–é…置符å·ä¸è¿›è¡Œæœç´¢ã€‚ 使用 / 开始在èœå•é¡¹ä¸æœç´¢ã€‚è¿™ä¸æ”¯æŒæ£åˆ™è¡¨è¾¾å¼ã€‚使用 <Down> 或 <Up> 分别为下一个命ä¸é¡¹å’Œä¸Šä¸€ä¸ªå‘½ä¸é¡¹ã€‚使用 <Esc> 退出æœç´¢æ¨¡å¼ã€‚ F8(SymSearch)在é…置符å·ä¸æœç´¢ç»™å®šçš„å—符串或æ£åˆ™è¡¨è¾¾å¼ï¼ˆregex)。 在 SymSearch ä¸ï¼ŒæŒ‰ä¸‹ (#) å‰ç¼€çš„键会直接跳转到该ä½ç½®ã€‚退出该新èœå•åŽï¼Œ ä½ å°†è¿”å›žåˆ°å½“å‰çš„æœç´¢ç»“果。 环境å˜é‡ï¼š ``NCONFIG_MODE`` æ¤æ¨¡å¼ä¼šå°†æ‰€æœ‰åèœå•æ˜¾ç¤ºä¸ºä¸€ä¸ªå¤§åž‹æ ‘结构。 示例:: make NCONFIG_MODE=single_menu nconfig xconfig ======= 在 xconfig ä¸æœç´¢ï¼š æœç´¢åŠŸèƒ½ä¼šæœç´¢å†…æ ¸é…置符å·åç§°ï¼Œå› æ¤ä½ 必须知é“欲æœç´¢å†…容的大致å称。 示例:: Ctrl-F hotplug 或:: èœå•ï¼šFile, Search, hotplug 列出所有符å·å称ä¸åŒ…å« "hotplug" çš„é…置符å·é¡¹ã€‚在æ¤æœç´¢å¯¹è¯æ¡†ä¸ï¼Œ ä½ å¯ä»¥æ›´æ”¹ä»»ä½•æœªç°æ˜¾æ¡ç›®çš„é…ç½®è®¾ç½®ã€‚ä½ è¿˜å¯ä»¥è¾“å…¥ä¸åŒçš„æœç´¢å—符串, è€Œæ— éœ€è¿”å›žä¸»èœå•ã€‚ gconfig ======= 在 gconfig ä¸æœç´¢ï¼š gconfig ä¸æ²¡æœ‰æœç´¢å‘½ä»¤ã€‚然而,gconfig å…·æœ‰å‡ ç§ä¸åŒçš„查看选择ã€æ¨¡å¼å’Œé€‰é¡¹ã€‚