/usr/bin/ld: scripts/dtc/dtc-parser.tab.o:(.bss+0x10): multiple definition of `yylloc'; scripts/dtc/dtc-lexer.lex.o:(.bss+0x0): first defined here collect2: error: ld returned 1 exit status make[4]: *** [scripts/Makefile.host:99:scripts/dtc/dtc] 错误 1 make[3]: *** [../scripts/Makefile.build:642:scripts/dtc] 错误 2 make[2]: *** [/home/xy/Kernel/Kernel/Makefile:1193:scripts] 错误 2 make[1]: *** [Makefile:146:sub-make] 错误 2 make: *** [Makefile:24:__sub-make] 错误 2
时间: 2023-09-27 14:07:07 浏览: 360
这个错误提示通常表示在链接过程中出现了重复定义的符号。在你的错误信息中,`yylloc` 符号被多次定义,导致链接失败。
要解决这个问题,你可以尝试以下几个步骤:
1. 确认你使用的是正确版本的工具链。检查一下你的系统中是否安装了正确版本的编译器、链接器等工具。
2. 如果你已经确认安装了正确版本的工具链,那么可能需要检查一下代码中的重复定义问题。打开相关的源代码文件(如 `dtc-parser.tab.c` 和 `dtc-lexer.lex.c`),搜索 `yylloc` 符号的定义,并确保只有一处定义。
3. 如果确认代码中只有一处 `yylloc` 的定义,但仍然出现重复定义的错误,可能是由于编译器或链接器的设置问题导致。你可以尝试在编译命令中添加 `-Wl,--allow-multiple-definition` 选项来允许多重定义符号,例如:
```
gcc -Wl,--allow-multiple-definition -o output_file input_file1.o input_file2.o ...
```
这个选项告诉链接器允许多次定义同一个符号,并且会选择其中一处定义作为最终结果。但请注意,这只是一种权宜之计,可能会导致其他问题,建议在修改代码或调整编译配置文件时解决重复定义的问题。
4. 如果以上方法仍然无效,可能需要进一步调查和分析具体的环境和编译配置。提供更多的信息,例如操作系统版本、使用的编译器版本、编译命令等,可以帮助我更好地理解问题并提供更准确的解决方案。
请尝试以上方法,并告诉我结果,我将尽力帮助你解决问题。
阅读全文