编译Linux内核报错:usr/bin/ld: scripts/dtc/dtc-parser.tab.o:(.bss+0x50): multiple definition of `yylloc‘;

1、问题现象

编译内核报multiple definition of yylloc,日志如下:

/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.1[3]: *** [scripts/dtc/dtc] Error 1
scripts/Makefile.host:99: recipe for target 'scripts/dtc/dtc' failed
scripts/Makefile.build:544: recipe for target 'scripts/dtc' failed
make-4.1[2]: *** [scripts/dtc] Error 2

2、问题根因

gcc版本过高(高于10.0),可通过gcc -v查看;

3、解决方案

切换gcc版本,具体命令如下:

下载gcc-9与g+±9

sudo apt install gcc-9 g++-9

将gcc g++版本都切换为9

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 100
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-9 100

参考文章:ubuntu22.04 编译Linux内核出现 multiple definition of `yylloc‘ 问题解决_ubuntu22 内核开发-CSDN博客

猜你喜欢

转载自blog.csdn.net/weixin_44498318/article/details/141285583