Linux内核制作标签变量

3

Linux内核源代码可以使用make tags命令获取编辑器的标签。在scripts/tags.sh中,第7行和第8行指出“使用以下环境变量:ARCHSUBARCHSRCARCHsrctreesrcobj”。我想问一下这些变量的含义是什么?

我已经阅读了这篇文章,但它只提到了两个变量:SRCARCHSUBARCH

1个回答

3

你应该使用的变量

下面的变量可以传递给tags.sh(实际上你应该将它们传递给make tags cscope命令,然后Makefile会为你将它们传递给tags.sh)。

  1. ARCH:要索引的架构。你可以通过在内核源代码树中执行ls -l arch/来查看所有架构列表。

  2. SUBARCH:这个变量的含义取决于你的架构:

    • 如果ARCH=armSUBARCH将用于确定arch/arm/mach-*arch/arm/plat-*目录,并且这些目录将被索引
    • 如果ARCH=um,使用SUBARCH指定你实际想要在用户模式Linux中使用的架构(比如SUBARCH=armSUBARCH=x86
    • 对于其他架构,你可以省略这个变量
  3. ALLSOURCE_ARCHS:使用这个变量来索引多个架构。比如ALLSOURCE_ARCHS="x86 mips arm"ALLSOURCE_ARCHS="all"。如果你只想索引一个架构,省略这个变量并使用ARCH

  4. COMPILED_SOURCE:如果你只想索引实际编译过的源文件,将该变量设置为1。如果你想索引所有源文件,则省略设置此变量。

  5. O=(这实际上是Makefile参数):使用绝对路径(如果你想在内核目录之外加载创建的cscope/ctags索引文件,比如开发基于内核的模块时)。如果你想使用相对路径(即你只在内核目录中进行开发),只需省略该参数。

你不需要操作的变量

  1. SRCARCH:从Makefile中的ARCH变量设置并传递给脚本。你可能不需要操纵它,只需正确设置ARCH变量即可。

  2. srctree:内核源代码树路径。如果你通过make cscope tags使用该脚本,则该变量将自动从Makefile中传递。

  3. srcobj变量:这些变量不再被scripts/tags.sh使用。它已经被替换为利用KBUILD_SRC变量,当你为它提供O=...参数时,Makefile会自动提供该变量。

使用方法

基本上,我建议只通过make调用来使用scripts/tags.sh。例如:

$ make O=. ARCH=arm SUBARCH=omap2 COMPILED_SOURCE=1 cscope tags

或者

$ make ARCH=x86 cscope tags

不要误会,官网提供这些信息吗?我想知道参考链接。如果我有其他问题,我可以先阅读文档。谢谢。 - amikai
@amikai "tags.sh" 中这些变量的含义没有记录下来,所以我仅仅是阅读了脚本本身及与之关联的 "git log" 消息,并且推断出使用方式。所有这些变量(除了 COMPILED_SOURCE)实际上都是内核构建系统变量,所以您可以在 Documentation/kbuild/kbuild.txt 中阅读到它们的大部分内容,但这与 "tags.sh" 的相关性不太相符。 - Sam Protsenko

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接