Linux内核DTS文件中bootargs能否换行?编译报错相关咨询
解决bootargs多行拆分编译报错问题
问题背景
当bootargs参数过长时,为提升可读性尝试将其拆分为多行:
原单行写法:
bootargs = "console=ttyS0,115200 earlycon=uart8250,mmio32,0x60020020,115200n8 loglevel=8 initrd=0x96000000,0x1000000 root=/dev/ram0 rw init=/linuxrc";
采用GPT建议的多行写法后编译报错:
bootargs = "console=ttyS0,115200 " "earlycon=uart8250,mmio32,0x60020020,115200n8 " "loglevel=8 " "initrd=0x96000000,0x1000000 " "root=/dev/ram0 rw " "init=/linuxrc";
疑问:是否是编译器版本导致的语法错误?
问题分析与解决
这种报错和编译器版本无关,核心原因是所用配置文件的语法规则不支持C语言风格的字符串自动拼接。GPT给出的写法是C语言中合法的多行字符串拼接方式,但在嵌入式场景的配置文件(比如U-Boot、内核Kconfig这类配置系统)中,解析逻辑并不识别这种写法,因此会判定为语法错误。
正确的多行写法应该使用**反斜杠()**作为行续符,告诉解析器下一行是当前行的延续:
bootargs = "console=ttyS0,115200 \ earlycon=uart8250,mmio32,0x60020020,115200n8 \ loglevel=8 \ initrd=0x96000000,0x1000000 \ root=/dev/ram0 rw \ init=/linuxrc";
注意:反斜杠后面不能有任何空格或换行之外的字符,否则行续符会失效,依旧会触发语法错误。
内容的提问来源于stack exchange,提问作者kevin
相关产品推荐
相关产品推荐

