makefile中#/* */代表什么
时间: 2023-09-02 14:15:23 浏览: 196
在Makefile中,#代表注释符号,可以用来注释掉某行或某个部分的代码,使其不参与编译或运行。在注释符号#后面如果加上/\*,则表示这是一个多行注释的开始符号。在注释内容结束时,需要使用\*/来表示多行注释的结束符号。在多行注释中,可以注释掉多行代码,直到遇到\*/为止。但是,需要注意的是,这种写法不是标准的Makefile语法,因此在不同的编译器或操作系统中可能会出现不同的效果。
相关问题
srcs = glob([ "**/*.c", "**/*.h", "**/Kbuild", "**/Makefile", ])中**表示什么
在这个Bazel构建规则中,`**`是一个通配符,代表任意深度的子目录。`"*"`表示匹配任何字符(除了路径分隔符)。所以`**/*.c` 和 `**/*.h` 表示查找当前目录及其所有子目录下所有的 `.c` 和 `.h` 文件。`**/Kbuild` 和 `**/Makefile` 则分别查找所有子目录下的 `Kbuild` 文件和 `Makefile` 文件。
这种模式常用于生成目标规则,因为它允许动态地收集整个目录树中的源文件,而不是硬编码每一个单独的文件。这样做的好处是可以更方便地管理源代码,如果结构发生变化,只需要更新这一行就可以自动捕获改动。
../kernel/taskstats.c:479:6: error: #elif with no expression #elif ^ make[3]: *** [../scripts/Makefile.build:339:kernel/taskstats.o] 错误 1 make[2]: *** [/home/xy/Kernel/Kernel/Makefile:1178:kernel] 错误 2 make[1]: *** [Makefile:146:sub-make] 错误 2 make: *** [Makefile:24:__sub-make] 错误 2
这个错误提示通常表示在条件编译中出现了 `#elif` 而没有给出表达式。在你的错误信息中,`#elif` 后面没有给出具体的条件表达式,导致编译失败。
要解决这个问题,可以按照以下步骤进行处理:
1. 打开 `../kernel/taskstats.c` 文件,并找到报错行 `#elif`。
2. 确认在 `#elif` 后面是否缺少了条件表达式。条件表达式应该是一个布尔表达式,用于确定是否满足该分支的条件。
3. 在 `#elif` 后面添加适当的条件表达式。例如:
```c
#elif defined(CONFIG_XYZ)
```
其中 `CONFIG_XYZ` 是一个代表某个配置选项的宏定义,具体的宏定义应该根据你的代码和需求而定。
4. 保存文件并重新编译。
如果以上步骤仍然没有解决问题,请提供更多的具体信息,尤其是报错行附近的代码片段,以便我能够更好地帮助你解决这个问题。
阅读全文