Skip to content

Commit a1e42d2

Browse files
mudongliangJonathan Corbet
authored andcommitted
docs/zh_CN: add the translation of kbuild/kbuild.rst
Finish the translation of kbuild/kbuild.rst and move kbuild from TODO to the main body. Update to commit 2eb5d7f ("kbuild: doc: describe the -C option precisely for external module builds") Signed-off-by: Dongliang Mu <[email protected]> Reviewed-by: Alex Shi <[email protected]> Signed-off-by: Jonathan Corbet <[email protected]> Link: https://lore.kernel.org/r/[email protected]
1 parent 3f53d1b commit a1e42d2

File tree

2 files changed

+305
-1
lines changed

2 files changed

+305
-1
lines changed

Documentation/translations/zh_CN/kbuild/index.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,12 @@
1515
kconfig
1616
headers_install
1717
gcc-plugins
18+
kbuild
1819

1920
TODO:
2021

2122
- kconfig-language
2223
- kconfig-macro-language
23-
- kbuild
2424
- makefiles
2525
- modules
2626
- issues
Lines changed: 304 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,304 @@
1+
.. SPDX-License-Identifier: GPL-2.0
2+
3+
.. include:: ../disclaimer-zh_CN.rst
4+
5+
:Original: Documentation/kbuild/kbuild.rst
6+
:Translator: 慕冬亮 Dongliang Mu <[email protected]>
7+
8+
======
9+
Kbuild
10+
======
11+
12+
13+
输出文件
14+
========
15+
16+
modules.order
17+
-------------
18+
该文件记录模块在 Makefile 中出现的顺序。modprobe 使用该文件来确定性
19+
解析匹配多个模块的别名。
20+
21+
modules.builtin
22+
---------------
23+
该文件列出了所有内置到内核中的模块。modprobe 使用该文件来避免尝试加载
24+
内置模块时出错。
25+
26+
modules.builtin.modinfo
27+
-----------------------
28+
该文件包含所有内置模块的 modinfo。与单独模块的 modinfo 不同,所有字段
29+
都带有模块名称前缀。
30+
31+
modules.builtin.ranges
32+
----------------------
33+
该文件包含所有内核内置模块的地址偏移范围(每个 ELF 节)。结合 System.map
34+
文件,它可以用来将模块名称与符号关联起来。
35+
36+
环境变量
37+
========
38+
39+
KCPPFLAGS
40+
---------
41+
在预处理时传递的额外选项。kbuild 进行所有预处理(包括构建 C 文件和汇编文件)
42+
时,都会使用这些预处理选项。
43+
44+
KAFLAGS
45+
-------
46+
传递给汇编器的额外选项(适用于内置模块和外部模块)。
47+
48+
AFLAGS_MODULE
49+
-------------
50+
外部模块的额外汇编选项。
51+
52+
AFLAGS_KERNEL
53+
-------------
54+
内置模块的额外汇编选项。
55+
56+
KCFLAGS
57+
-------
58+
传递给 C 编译器的额外选项(适用于内置模块和外部模块)。
59+
60+
KRUSTFLAGS
61+
----------
62+
传递给 Rust 编译器的额外选项(适用于内置模块和外部模块)。
63+
64+
CFLAGS_KERNEL
65+
-------------
66+
在编译内置代码时,传递给 $(CC) 的额外选项。
67+
68+
CFLAGS_MODULE
69+
-------------
70+
编译外部模块时,传递给 $(CC) 的额外模块特定选项。
71+
72+
RUSTFLAGS_KERNEL
73+
----------------
74+
在编译内置代码时,传递给 $(RUSTC) 的额外选项。
75+
76+
RUSTFLAGS_MODULE
77+
----------------
78+
用于 $(RUSTC) 的额外模块特定选项。
79+
80+
LDFLAGS_MODULE
81+
--------------
82+
用于 $(LD) 链接模块时的额外选项。
83+
84+
HOSTCFLAGS
85+
----------
86+
在构建主机程序时传递给 $(HOSTCC) 的额外标志。
87+
88+
HOSTCXXFLAGS
89+
------------
90+
在构建主机程序时传递给 $(HOSTCXX) 的额外标志。
91+
92+
HOSTRUSTFLAGS
93+
-------------
94+
在构建主机程序时传递给 $(HOSTRUSTC) 的额外标志。
95+
96+
HOSTLDFLAGS
97+
-----------
98+
链接主机程序时传递的额外选项。
99+
100+
HOSTLDLIBS
101+
----------
102+
在构建主机程序时链接的额外库。
103+
104+
.. _zh_cn_userkbuildflags:
105+
106+
USERCFLAGS
107+
----------
108+
用于 $(CC) 编译用户程序(userprogs)时的额外选项。
109+
110+
USERLDFLAGS
111+
-----------
112+
用于 $(LD) 链接用户程序时的额外选项。用户程序(userprogs)是使用 CC 链接的,
113+
因此 $(USERLDFLAGS) 应该根据需要包含 "-Wl," 前缀。
114+
115+
KBUILD_KCONFIG
116+
--------------
117+
将顶级 Kconfig 文件设置为此环境变量的值。默认名称为 "Kconfig"。
118+
119+
KBUILD_VERBOSE
120+
--------------
121+
设置 kbuild 的详细程度。可以分配与 "V=..." 相同的值。
122+
123+
有关完整列表,请参见 `make help`。
124+
125+
设置 "V=..." 优先于 KBUILD_VERBOSE。
126+
127+
KBUILD_EXTMOD
128+
-------------
129+
在构建外部模块时设置内核源代码的搜索目录。
130+
131+
设置 "M=..." 优先于 KBUILD_EXTMOD。
132+
133+
KBUILD_OUTPUT
134+
-------------
135+
指定内核构建的输出目录。
136+
137+
在单独的构建目录中为预构建内核构建外部模块时,这个变量也可以指向内核输出目录。请注意,
138+
这并不指定外部模块本身的输出目录。
139+
140+
输出目录也可以使用 "O=..." 指定。
141+
142+
设置 "O=..." 优先于 KBUILD_OUTPUT。
143+
144+
KBUILD_EXTRA_WARN
145+
-----------------
146+
指定额外的构建检查。也可以通过在命令行传递 "W=..." 来设置相同的值。
147+
148+
请参阅 `make help` 了解支持的值列表。
149+
150+
设置 "W=..." 优先于 KBUILD_EXTRA_WARN。
151+
152+
KBUILD_DEBARCH
153+
--------------
154+
对于 deb-pkg 目标,允许覆盖 deb-pkg 部署的正常启发式方法。通常 deb-pkg 尝试根据
155+
UTS_MACHINE 变量(在某些架构中还包括内核配置)来猜测正确的架构。KBUILD_DEBARCH
156+
的值假定(不检查)为有效的 Debian 架构。
157+
158+
KDOCFLAGS
159+
---------
160+
指定在构建过程中用于 kernel-doc 检查的额外(警告/错误)标志,查看
161+
scripts/kernel-doc 了解支持的标志。请注意,这目前不适用于文档构建。
162+
163+
ARCH
164+
----
165+
设置 ARCH 为要构建的架构。
166+
167+
在大多数情况下,架构的名称与 arch/ 目录中的子目录名称相同。
168+
169+
但某些架构(如 x86 和 sparc)有别名。
170+
171+
- x86: i386 表示 32 位,x86_64 表示 64 位
172+
- parisc: parisc64 表示 64 位
173+
- sparc: sparc32 表示 32 位,sparc64 表示 64 位
174+
175+
CROSS_COMPILE
176+
-------------
177+
指定 binutils 文件名的可选固定部分。CROSS_COMPILE 可以是文件名的一部分或完整路径。
178+
179+
在某些设置中,CROSS_COMPILE 也用于 ccache。
180+
181+
CF
182+
--
183+
用于 sparse 的额外选项。
184+
185+
CF 通常在命令行中如下所示使用::
186+
187+
make CF=-Wbitwise C=2
188+
189+
INSTALL_PATH
190+
------------
191+
INSTALL_PATH 指定放置更新后的内核和系统映像的路径。默认值是 /boot,但你可以设置
192+
为其他值。
193+
194+
INSTALLKERNEL
195+
-------------
196+
使用 "make install" 时调用的安装脚本。
197+
默认名称是 "installkernel"。
198+
199+
该脚本将会以以下参数调用:
200+
201+
- $1 - 内核版本
202+
- $2 - 内核映像文件
203+
- $3 - 内核映射文件
204+
- $4 - 默认安装路径(如果为空,则使用根目录)
205+
206+
"make install" 的实现是架构特定的,可能与上述有所不同。
207+
208+
提供 INSTALLKERNEL 以便在交叉编译内核时可以指定自定义安装程序。
209+
210+
MODLIB
211+
------
212+
指定模块的安装位置。
213+
默认值为::
214+
215+
$(INSTALL_MOD_PATH)/lib/modules/$(KERNELRELEASE)
216+
217+
该值可以被覆盖,在这种情况下将忽略默认值。
218+
219+
INSTALL_MOD_PATH
220+
----------------
221+
INSTALL_MOD_PATH 指定了模块目录重定位时 MODLIB 的前缀,通常由构建根
222+
(build roots)所需。它没有在 makefile 中定义,但如果需要,可以作为
223+
参数传递给 make。
224+
225+
INSTALL_MOD_STRIP
226+
-----------------
227+
如果 INSTALL_MOD_STRIP 被定义,内核模块在安装后会被剥离。如果
228+
INSTALL_MOD_STRIP 的值为 '1',则会使用默认选项 --strip-debug。否则,
229+
INSTALL_MOD_STRIP 的值将作为 strip 命令的选项。
230+
231+
INSTALL_HDR_PATH
232+
----------------
233+
INSTALL_HDR_PATH 指定了执行 "make headers_*" 时,用户空间头文件的安装位置。
234+
235+
默认值为::
236+
237+
$(objtree)/usr
238+
239+
$(objtree) 是保存输出文件的目录。
240+
输出目录通常使用命令行中的 "O=..." 进行设置。
241+
242+
该值可以被覆盖,在这种情况下将忽略默认值。
243+
244+
INSTALL_DTBS_PATH
245+
-----------------
246+
INSTALL_DTBS_PATH 指定了设备树二进制文件的安装位置,通常由构建根(build roots)所需。
247+
它没有在 makefile 中定义,但如果需要,可以作为参数传递给 make。
248+
249+
KBUILD_ABS_SRCTREE
250+
--------------------------------------------------
251+
Kbuild 在可能的情况下使用相对路径指向源代码树。例如,在源代码树中构建时,源代码树路径是
252+
'.'。
253+
254+
设置该标志请求 Kbuild 使用源代码树的绝对路径。
255+
在某些情况下这是有用的,例如在生成带有绝对路径条目的标签文件时等。
256+
257+
KBUILD_SIGN_PIN
258+
---------------
259+
当签署内核模块时,如果私钥需要密码或 PIN,此变量允许将密码或 PIN 传递给 sign-file 工具。
260+
261+
KBUILD_MODPOST_WARN
262+
-------------------
263+
KBUILD_MODPOST_WARN 可以设置为在最终模块链接阶段出现未定义符号时避免错误。它将这些错误
264+
转为警告。
265+
266+
KBUILD_MODPOST_NOFINAL
267+
----------------------
268+
KBUILD_MODPOST_NOFINAL 可以设置为跳过模块的最终链接。这仅在加速编译测试时有用。
269+
270+
KBUILD_EXTRA_SYMBOLS
271+
--------------------
272+
用于依赖其他模块符号的模块。详见 modules.rst。
273+
274+
ALLSOURCE_ARCHS
275+
---------------
276+
对于 tags/TAGS/cscope 目标,可以指定包含在数据库中的多个架构,用空格分隔。例如::
277+
278+
$ make ALLSOURCE_ARCHS="x86 mips arm" tags
279+
280+
要获取所有可用架构,也可以指定 all。例如::
281+
282+
$ make ALLSOURCE_ARCHS=all tags
283+
284+
IGNORE_DIRS
285+
-----------
286+
对于 tags/TAGS/cscope 目标,可以选择不包含在数据库中的目录,用空格分隔。例如::
287+
288+
$ make IGNORE_DIRS="drivers/gpu/drm/radeon tools" cscope
289+
290+
KBUILD_BUILD_TIMESTAMP
291+
----------------------
292+
将该环境变量设置为日期字符串,可以覆盖在 UTS_VERSION 定义中使用的时间戳
293+
(运行内核时的 uname -v)。该值必须是一个可以传递给 date -d 的字符串。默认值是
294+
内核构建某个时刻的 date 命令输出。
295+
296+
KBUILD_BUILD_USER, KBUILD_BUILD_HOST
297+
------------------------------------
298+
这两个变量允许覆盖启动时显示的 user@host 字符串以及 /proc/version 中的信息。
299+
默认值分别是 whoami 和 host 命令的输出。
300+
301+
LLVM
302+
----
303+
如果该变量设置为 1,Kbuild 将使用 Clang 和 LLVM 工具,而不是 GCC 和 GNU
304+
binutils 来构建内核。

0 commit comments

Comments
 (0)