导航

    全志在线开发者论坛

    • 注册
    • 登录
    • 搜索
    • 版块
    • 话题
    • 在线文档
    • 社区主页

    Ubuntu 22.04 编译报错 multiple definition of 'yylloc';

    V Series
    2
    3
    1961
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • WhycanService
      WhycanService LV 8 最后由 编辑

      c257cad1-be4c-4faf-82ab-54fc4d957641-image.png

      1 条回复 最后回复 回复 引用 分享 0
      • WhycanService
        WhycanService LV 8 最后由 编辑

        打入以下补丁解决

        From 11647f99b4de6bc460e106e876f72fc7af3e54a6 Mon Sep 17 00:00:00 2001
        From: Dirk Mueller <dmueller@suse.com>
        Date: Tue, 14 Jan 2020 18:53:41 +0100
        Subject: [PATCH] scripts/dtc: Remove redundant YYLOC global declaration
        
        commit e33a814e772cdc36436c8c188d8c42d019fda639 upstream.
        
        gcc 10 will default to -fno-common, which causes this error at link
        time:
        
          (.text+0x0): multiple definition of `yylloc'; dtc-lexer.lex.o (symbol from plugin):(.text+0x0): first defined here
        
        This is because both dtc-lexer as well as dtc-parser define the same
        global symbol yyloc. Before with -fcommon those were merged into one
        defintion. The proper solution would be to to mark this as "extern",
        however that leads to:
        
          dtc-lexer.l:26:16: error: redundant redeclaration of 'yylloc' [-Werror=redundant-decls]
           26 | extern YYLTYPE yylloc;
              |                ^~~~~~
        In file included from dtc-lexer.l:24:
        dtc-parser.tab.h:127:16: note: previous declaration of 'yylloc' was here
          127 | extern YYLTYPE yylloc;
              |                ^~~~~~
        cc1: all warnings being treated as errors
        
        which means the declaration is completely redundant and can just be
        dropped.
        
        Signed-off-by: Dirk Mueller <dmueller@suse.com>
        Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
        [robh: cherry-pick from upstream]
        Cc: stable@vger.kernel.org
        Signed-off-by: Rob Herring <robh@kernel.org>
        [nc: Also apply to dtc-lexer.lex.c_shipped due to a lack of
             e039139be8c2, where dtc-lexer.l started being used]
        Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
        Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
        Change-Id: I7f299451e99aab09375883546e47505ec0937c26
        ---
         scripts/dtc/dtc-lexer.l             | 1 -
         scripts/dtc/dtc-lexer.lex.c_shipped | 1 -
         2 files changed, 2 deletions(-)
        
        diff --git a/scripts/dtc/dtc-lexer.l b/scripts/dtc/dtc-lexer.l
        index c600603044f3..cf7707be43aa 100644
        --- a/scripts/dtc/dtc-lexer.l
        +++ b/scripts/dtc/dtc-lexer.l
        @@ -38,7 +38,6 @@ LINECOMMENT	"//".*\n
         #include "srcpos.h"
         #include "dtc-parser.tab.h"
         
        -YYLTYPE yylloc;
         extern bool treesource_error;
         
         /* CAUTION: this will stop working if we ever use yyless() or yyunput() */
        diff --git a/scripts/dtc/dtc-lexer.lex.c_shipped b/scripts/dtc/dtc-lexer.lex.c_shipped
        index 2c862bc86ad0..e3663ce1af5d 100644
        --- a/scripts/dtc/dtc-lexer.lex.c_shipped
        +++ b/scripts/dtc/dtc-lexer.lex.c_shipped
        @@ -631,7 +631,6 @@ char *yytext;
         #include "srcpos.h"
         #include "dtc-parser.tab.h"
         
        -YYLTYPE yylloc;
         extern bool treesource_error;
         
         /* CAUTION: this will stop working if we ever use yyless() or yyunput() */
        
        1 条回复 最后回复 回复 引用 分享 1
        • F
          fafa1123 LV 2 最后由 编辑

          /root/tina-v853-open/kernel/linux-4.9/scripts/dtc
          找到文件 dtc-lexer.lex.c_shipped
          搜索YYLTYPE yylloc
          修订为 extern YYLTYPE yylloc

          问题就解决了

          1 条回复 最后回复 回复 引用 分享 0
          • 1 / 1
          • First post
            Last post

          Copyright © 2024 深圳全志在线有限公司 粤ICP备2021084185号 粤公网安备44030502007680号

          行为准则 | 用户协议 | 隐私权政策