Navigation

    全志在线开发者论坛

    • Register
    • Login
    • Search
    • Categories
    • Tags
    • 在线文档
    • 社区主页

    【加精】在Ubuntu21.04中编译Tina SDKV1.01 版本 踩坑记录

    MR Series
    4
    4
    4387
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • BedRock
      BedRock LV 6 last edited by xiaowenge

      前言

      本人使用Ubuntu21.04,是在Ubuntu18.04 使用系统升级的方法升级,并非直接安装Ubuntu21.04 系统镜像。希望参考该帖开发者注意。


      安装环境提醒

      再Ubuntu更新软件包同时,个人不推荐使用清华源,可能会出现一些软件包安装找不到的问题(因为我之前就是),后面改为阿里源,然后就没有出现过软件包依赖的相关问题。切换软件源请自行百度参考帖子。


      安装过程踩坑记录

      参考全志官方文档:https://d1.docs.allwinnertech.com/study/study_2getsdk/

      1、安装软件包问题

      sudo apt-get install build-essential subversion git-core libncurses5-dev zlib1g-dev gawk flex quilt libssl-dev xsltproc libxml-parser-perl mercurial bzr ecj cvs unzip lib32z1 lib32z1-dev lib32stdc++6 libstdc++6 -y
      

      在软件包安装的时候 建议取消后面 -y 选项 ,先看一下有没有自动卸载一些包 如果有建议取消安装,然后一个一个包安装。
      如果出现软件包找不到的情况,请自行使用Tab补齐命令查看可以安装的包,并选择何时的包进行安装。
      针对于32位的软件包

      sudo apt-get install libc6:i386 libstdc++6:i386 lib32ncurses5 lib32z1
      

      更有可能出现找不到的情况,依然使用Tab补齐命令,查看当前可以安装的包,并选择何时的包进行安装。

      2、编译问题

      依然参考官方文档:https://d1.docs.allwinnertech.com/study/study_4compile/


      source 环境变量如果有错,请检查文件夹权限,将文件夹权限由root用户更改为普通用户。
      如果还有问题,请根据具体信息对照 envsetup.sh文件中的 envsetup函数。一一落实执行过程。


      3、make过程中遇到的问题

      问题一

      报错提示没有记录,查看报错提示,可以定位到 两处文件,修改其源码为:

      #gdbusmessage.c文件,路径为:./out/d1-nezha/compile_dir/target/host/glib-2.50.1/gio/gdbusmessage.c
      gdbusmessage.c:2698:30:
            if (signature_str)
            tupled_signature_str = g_strdup_printf ("(%s)", signature_str);
      
      #这个文件路径还请自行查找
      dbusauth.c 1298
            if (line == NULL)
                  goto out;
                debug_print ("SERVER: WaitingForBegin, read '%s'", line);
      

      问题二

      rm: cannot remove '/home/jie/allwinner/tina-d1-open/tmp/info/.overrides-packageinfo-1859194': Permission denied
      make[3]: *** No rule to make target '/home/jie/allwinner/tina-d1-open/tmp/info/.files-packageinfo-1861882'.  Stop.
      cat: /home/jie/allwinner/tina-d1-open/tmp/info/.files-packageinfo-1861882: No such file or directory
      cat: /home/jie/allwinner/tina-d1-open/tmp/info/.overrides-packageinfo-1861882: No such file or directory
      rm: cannot remove '/home/jie/allwinner/tina-d1-open/tmp/info/.files-packageinfo.stamp.4ecc855bd5022757c3b7544e2dfb29c7': Permission denied
      touch: cannot touch '/home/jie/allwinner/tina-d1-open/tmp/info/.files-packageinfo.stamp.d41d8cd98f00b204e9800998ecf8427e': Permission denied
      touch: cannot touch '/home/jie/allwinner/tina-d1-open/tmp/info/.files-packageinfo.stamp': Permission denied
      make[2]: *** [build/scan.mk:84: /home/jie/allwinner/tina-d1-open/tmp/info/.files-packageinfo.stamp] Error 1
      make[1]: *** [/home/jie/allwinner/tina-d1-open/build/toplevel.mk:84: prepare-tmpinfo] Error 2
      make: *** [/home/jie/allwinner/tina-d1-open/build/toplevel.mk:304:world] 错误 2
      [2]+  已完成               $T/tools/build/buildserver --path $T
      
      #### make failed to build some targets (1 seconds) ####
      
      

      这个主要是文件夹及文件权限问题,给这几个文件及它的文件夹777权限。
      基本是 tmp文件夹的相关属性。

      问题三

      strerror-sym.c:47:9: error: 'errnos_msgstr' undeclared (first use in this function)
        return errnos_msgstr + errnos_msgidx[idx];
               ^~~~~~~~~~~~~
      strerror-sym.c:47:9: note: each undeclared identifier is reported only once for eac                                                                                                                        h function it appears in
      strerror-sym.c:47:25: error: 'errnos_msgidx' undeclared (first use in this function                                                                                                                           )
        return errnos_msgstr + errnos_msgidx[idx];
                               ^~~~~~~~~~~~~
      make[7]: *** [Makefile:946: gpg_error-strerror-sym.o] Error 1
      
      

      通过查找文件定位
      ./out/d1-nezha/compile_dir/target/libgpg-error-1.27/src/errnos-sym.h 这个文件为空
      编译不通过 , 相关变量没有定义
      感谢全志官方群大佬的鼎力相助发了我一手头文件
      这是缺少头文件中的内容

      /* Output of mkstrtable.awk.  DO NOT EDIT.  */
      
      /* errnos.in - List of system error values.
         Copyright (C) 2003, 2004 g10 Code GmbH
      
         This file is part of libgpg-error.
      
         libgpg-error is free software; you can redistribute it and/or
         modify it under the terms of the GNU Lesser General Public License
         as published by the Free Software Foundation; either version 2.1 of
         the License, or (at your option) any later version.
      
         libgpg-error is distributed in the hope that it will be useful, but
         WITHOUT ANY WARRANTY; without even the implied warranty of
         MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
         Lesser General Public License for more details.
      
         You should have received a copy of the GNU Lesser General Public
         License along with libgpg-error; if not, write to the Free
         Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
         02111-1307, USA.  */
      
      
      
      /* The purpose of this complex string table is to produce
         optimal code with a minimum of relocations.  */
      
      static const char errnos_msgstr[] =
        "GPG_ERR_E2BIG" "\0"
        "GPG_ERR_EACCES" "\0"
        "GPG_ERR_EADDRINUSE" "\0"
        "GPG_ERR_EADDRNOTAVAIL" "\0"
        "GPG_ERR_EADV" "\0"
        "GPG_ERR_EAFNOSUPPORT" "\0"
        "GPG_ERR_EAGAIN" "\0"
        "GPG_ERR_EALREADY" "\0"
        "GPG_ERR_EAUTH" "\0"
        "GPG_ERR_EBACKGROUND" "\0"
        "GPG_ERR_EBADE" "\0"
        "GPG_ERR_EBADF" "\0"
        "GPG_ERR_EBADFD" "\0"
        "GPG_ERR_EBADMSG" "\0"
        "GPG_ERR_EBADR" "\0"
        "GPG_ERR_EBADRPC" "\0"
        "GPG_ERR_EBADRQC" "\0"
        "GPG_ERR_EBADSLT" "\0"
        "GPG_ERR_EBFONT" "\0"
        "GPG_ERR_EBUSY" "\0"
        "GPG_ERR_ECANCELED" "\0"
        "GPG_ERR_ECHILD" "\0"
        "GPG_ERR_ECHRNG" "\0"
        "GPG_ERR_ECOMM" "\0"
        "GPG_ERR_ECONNABORTED" "\0"
        "GPG_ERR_ECONNREFUSED" "\0"
        "GPG_ERR_ECONNRESET" "\0"
        "GPG_ERR_ED" "\0"
        "GPG_ERR_EDEADLK" "\0"
        "GPG_ERR_EDEADLOCK" "\0"
        "GPG_ERR_EDESTADDRREQ" "\0"
        "GPG_ERR_EDIED" "\0"
        "GPG_ERR_EDOM" "\0"
        "GPG_ERR_EDOTDOT" "\0"
        "GPG_ERR_EDQUOT" "\0"
        "GPG_ERR_EEXIST" "\0"
        "GPG_ERR_EFAULT" "\0"
        "GPG_ERR_EFBIG" "\0"
        "GPG_ERR_EFTYPE" "\0"
        "GPG_ERR_EGRATUITOUS" "\0"
        "GPG_ERR_EGREGIOUS" "\0"
        "GPG_ERR_EHOSTDOWN" "\0"
        "GPG_ERR_EHOSTUNREACH" "\0"
        "GPG_ERR_EIDRM" "\0"
        "GPG_ERR_EIEIO" "\0"
        "GPG_ERR_EILSEQ" "\0"
        "GPG_ERR_EINPROGRESS" "\0"
        "GPG_ERR_EINTR" "\0"
        "GPG_ERR_EINVAL" "\0"
        "GPG_ERR_EIO" "\0"
        "GPG_ERR_EISCONN" "\0"
        "GPG_ERR_EISDIR" "\0"
        "GPG_ERR_EISNAM" "\0"
        "GPG_ERR_EL2HLT" "\0"
        "GPG_ERR_EL2NSYNC" "\0"
        "GPG_ERR_EL3HLT" "\0"
        "GPG_ERR_EL3RST" "\0"
        "GPG_ERR_ELIBACC" "\0"
        "GPG_ERR_ELIBBAD" "\0"
        "GPG_ERR_ELIBEXEC" "\0"
        "GPG_ERR_ELIBMAX" "\0"
        "GPG_ERR_ELIBSCN" "\0"
        "GPG_ERR_ELNRNG" "\0"
        "GPG_ERR_ELOOP" "\0"
        "GPG_ERR_EMEDIUMTYPE" "\0"
        "GPG_ERR_EMFILE" "\0"
        "GPG_ERR_EMLINK" "\0"
        "GPG_ERR_EMSGSIZE" "\0"
        "GPG_ERR_EMULTIHOP" "\0"
        "GPG_ERR_ENAMETOOLONG" "\0"
        "GPG_ERR_ENAVAIL" "\0"
        "GPG_ERR_ENEEDAUTH" "\0"
        "GPG_ERR_ENETDOWN" "\0"
        "GPG_ERR_ENETRESET" "\0"
        "GPG_ERR_ENETUNREACH" "\0"
        "GPG_ERR_ENFILE" "\0"
        "GPG_ERR_ENOANO" "\0"
        "GPG_ERR_ENOBUFS" "\0"
        "GPG_ERR_ENOCSI" "\0"
        "GPG_ERR_ENODATA" "\0"
        "GPG_ERR_ENODEV" "\0"
        "GPG_ERR_ENOENT" "\0"
        "GPG_ERR_ENOEXEC" "\0"
        "GPG_ERR_ENOLCK" "\0"
        "GPG_ERR_ENOLINK" "\0"
        "GPG_ERR_ENOMEDIUM" "\0"
        "GPG_ERR_ENOMEM" "\0"
        "GPG_ERR_ENOMSG" "\0"
        "GPG_ERR_ENONET" "\0"
        "GPG_ERR_ENOPKG" "\0"
        "GPG_ERR_ENOPROTOOPT" "\0"
        "GPG_ERR_ENOSPC" "\0"
        "GPG_ERR_ENOSR" "\0"
        "GPG_ERR_ENOSTR" "\0"
        "GPG_ERR_ENOSYS" "\0"
        "GPG_ERR_ENOTBLK" "\0"
        "GPG_ERR_ENOTCONN" "\0"
        "GPG_ERR_ENOTDIR" "\0"
        "GPG_ERR_ENOTEMPTY" "\0"
        "GPG_ERR_ENOTNAM" "\0"
        "GPG_ERR_ENOTSOCK" "\0"
        "GPG_ERR_ENOTSUP" "\0"
        "GPG_ERR_ENOTTY" "\0"
        "GPG_ERR_ENOTUNIQ" "\0"
        "GPG_ERR_ENXIO" "\0"
        "GPG_ERR_EOPNOTSUPP" "\0"
        "GPG_ERR_EOVERFLOW" "\0"
        "GPG_ERR_EPERM" "\0"
        "GPG_ERR_EPFNOSUPPORT" "\0"
        "GPG_ERR_EPIPE" "\0"
        "GPG_ERR_EPROCLIM" "\0"
        "GPG_ERR_EPROCUNAVAIL" "\0"
        "GPG_ERR_EPROGMISMATCH" "\0"
        "GPG_ERR_EPROGUNAVAIL" "\0"
        "GPG_ERR_EPROTO" "\0"
        "GPG_ERR_EPROTONOSUPPORT" "\0"
        "GPG_ERR_EPROTOTYPE" "\0"
        "GPG_ERR_ERANGE" "\0"
        "GPG_ERR_EREMCHG" "\0"
        "GPG_ERR_EREMOTE" "\0"
        "GPG_ERR_EREMOTEIO" "\0"
        "GPG_ERR_ERESTART" "\0"
        "GPG_ERR_EROFS" "\0"
        "GPG_ERR_ERPCMISMATCH" "\0"
        "GPG_ERR_ESHUTDOWN" "\0"
        "GPG_ERR_ESOCKTNOSUPPORT" "\0"
        "GPG_ERR_ESPIPE" "\0"
        "GPG_ERR_ESRCH" "\0"
        "GPG_ERR_ESRMNT" "\0"
        "GPG_ERR_ESTALE" "\0"
        "GPG_ERR_ESTRPIPE" "\0"
        "GPG_ERR_ETIME" "\0"
        "GPG_ERR_ETIMEDOUT" "\0"
        "GPG_ERR_ETOOMANYREFS" "\0"
        "GPG_ERR_ETXTBSY" "\0"
        "GPG_ERR_EUCLEAN" "\0"
        "GPG_ERR_EUNATCH" "\0"
        "GPG_ERR_EUSERS" "\0"
        "GPG_ERR_EWOULDBLOCK" "\0"
        "GPG_ERR_EXDEV" "\0"
        "GPG_ERR_EXFULL";
      
      static const int errnos_msgidx[] =
        {
          0,
          14,
          29,
          48,
          70,
          83,
          104,
          119,
          136,
          150,
          170,
          184,
          198,
          213,
          229,
          243,
          259,
          275,
          291,
          306,
          320,
          338,
          353,
          368,
          382,
          403,
          424,
          443,
          454,
          470,
          488,
          509,
          523,
          536,
          552,
          567,
          582,
          597,
          611,
          626,
          646,
          664,
          682,
          703,
          717,
          731,
          746,
          766,
          780,
          795,
          807,
          823,
          838,
          853,
          868,
          885,
          900,
          915,
          931,
          947,
          964,
          980,
          996,
          1011,
          1025,
          1045,
          1060,
          1075,
          1092,
          1110,
          1131,
          1147,
          1165,
          1182,
          1200,
          1220,
          1235,
          1250,
          1266,
          1281,
          1297,
          1312,
          1327,
          1343,
          1358,
          1374,
          1392,
          1407,
          1422,
          1437,
          1452,
          1472,
          1487,
          1501,
          1516,
          1531,
          1547,
          1564,
          1580,
          1598,
          1614,
          1631,
          1647,
          1662,
          1679,
          1693,
          1712,
          1730,
          1744,
          1765,
          1779,
          1796,
          1817,
          1839,
          1860,
          1875,
          1899,
          1918,
          1933,
          1949,
          1965,
          1983,
          2000,
          2014,
          2035,
          2053,
          2077,
          2092,
          2106,
          2121,
          2136,
          2153,
          2167,
          2185,
          2206,
          2222,
          2238,
          2254,
          2269,
          2289,
          2303,
      
        };
      
      static GPG_ERR_INLINE int
      errnos_msgidxof (int code)
      {
        return (0 ? 0
        : ((code >= 0) && (code <= 140)) ? (code - 0)
        : -1);
      }
      

      谨此,更改之后,D1 SDK 编译通过。 非常感谢官方群 大佬们的帮助!

      #### make completed successfully (15:51 (mm:ss)) ####
      

      嘻嘻!

      Kirin Z 2 Replies Last reply Reply Quote Share 4
      • Kirin
        陈塘关李靖 LV 6 @BedRock last edited by

        @bedrock 感谢小大佬的分享,官方将送出麦克风子板一块作为分享奖励。更多交流欢迎加入全志在线官方交流qq群:498263967

        1 Reply Last reply Reply Quote Share 0
        • Z
          zqb_all LV 3 @BedRock last edited by

          关于以上的问题三

          可以尝试增加一个文件:

          package/libs/libgpg-error/patches/020-awk-Prepare-for-Gawk-5.0.patch
          

          内容如下:

          From 5e5e5180e923070ad0450890904e1216295fbc69 Mon Sep 17 00:00:00 2001
          From: NIIBE Yutaka <gniibe@fsij.org>
          Date: Mon, 15 Apr 2019 15:10:44 +0900
          Subject: [PATCH] awk: Prepare for Gawk 5.0.
          
          port from openwrt-18.06:
          
          * src/Makefile.am: Use pkg_namespace (instead of namespace).
          * src/mkerrnos.awk: Likewise.
          * lang/cl/mkerrcodes.awk: Don't escape # in regexp.
          * src/mkerrcodes.awk, src/mkerrcodes1.awk, src/mkerrcodes2.awk: Ditto.
          
          --
          
          In Gawk 5.0, regexp routines are replaced by Gnulib implementation,
          which only allows escaping specific characters.
          
          GnuPG-bug-id: 4459
          Reported-by: Marius Schamschula
          Signed-off-by: NIIBE Yutaka <gniibe@fsij.org>
          ---
           lang/cl/mkerrcodes.awk |  2 +-
           src/Makefile.am        |  2 +-
           src/Makefile.in        |  2 +-
           src/mkerrcodes.awk     |  2 +-
           src/mkerrcodes1.awk    |  2 +-
           src/mkerrcodes2.awk    |  2 +-
           src/mkerrnos.awk       |  2 +-
           src/mkstrtable.awk     | 10 +++++-----
           8 files changed, 12 insertions(+), 12 deletions(-)
          
          diff --git a/lang/cl/mkerrcodes.awk b/lang/cl/mkerrcodes.awk
          index ae29043..9a1fc18 100644
          --- a/lang/cl/mkerrcodes.awk
          +++ b/lang/cl/mkerrcodes.awk
          @@ -122,7 +122,7 @@ header {
           }
          
           !header {
          -  sub (/\#.+/, "");
          +  sub (/#.+/, "");
             sub (/[      ]+$/, ""); # Strip trailing space and tab characters.
          
             if (/^$/)
          diff --git a/src/Makefile.am b/src/Makefile.am
          index 398ec5e..9879872 100644
          --- a/src/Makefile.am
          +++ b/src/Makefile.am
          @@ -266,7 +266,7 @@ code-from-errno.h: mkerrcodes Makefile
          
           errnos-sym.h: Makefile mkstrtable.awk errnos.in
                  $(AWK) -f $(srcdir)/mkstrtable.awk -v textidx=2 -v nogettext=1 \
          -               -v prefix=GPG_ERR_ -v namespace=errnos_ \
          +               -v prefix=GPG_ERR_ -v pkg_namespace=errnos_ \
                          $(srcdir)/errnos.in >$@
          
          
          diff --git a/src/Makefile.in b/src/Makefile.in
          index e02b683..8789c0e 100644
          --- a/src/Makefile.in
          +++ b/src/Makefile.in
          @@ -1322,7 +1322,7 @@ code-from-errno.h: mkerrcodes Makefile
          
           errnos-sym.h: Makefile mkstrtable.awk errnos.in
                  $(AWK) -f $(srcdir)/mkstrtable.awk -v textidx=2 -v nogettext=1 \
          -               -v prefix=GPG_ERR_ -v namespace=errnos_ \
          +               -v prefix=GPG_ERR_ -v pkg_namespace=errnos_ \
                          $(srcdir)/errnos.in >$@
          
           mkheader: mkheader.c Makefile
          diff --git a/src/mkerrcodes.awk b/src/mkerrcodes.awk
          index 46d436c..e9c857c 100644
          --- a/src/mkerrcodes.awk
          +++ b/src/mkerrcodes.awk
          @@ -85,7 +85,7 @@ header {
           }
          
           !header {
          -  sub (/\#.+/, "");
          +  sub (/#.+/, "");
             sub (/[      ]+$/, ""); # Strip trailing space and tab characters.
          
             if (/^$/)
          diff --git a/src/mkerrcodes1.awk b/src/mkerrcodes1.awk
          index a771a73..4578e29 100644
          --- a/src/mkerrcodes1.awk
          +++ b/src/mkerrcodes1.awk
          @@ -81,7 +81,7 @@ header {
           }
          
           !header {
          -  sub (/\#.+/, "");
          +  sub (/#.+/, "");
             sub (/[      ]+$/, ""); # Strip trailing space and tab characters.
          
             if (/^$/)
          diff --git a/src/mkerrcodes2.awk b/src/mkerrcodes2.awk
          index ea58503..188f7a4 100644
          --- a/src/mkerrcodes2.awk
          +++ b/src/mkerrcodes2.awk
          @@ -91,7 +91,7 @@ header {
           }
          
           !header {
          -  sub (/\#.+/, "");
          +  sub (/#.+/, "");
             sub (/[      ]+$/, ""); # Strip trailing space and tab characters.
          
             if (/^$/)
          diff --git a/src/mkerrnos.awk b/src/mkerrnos.awk
          index f79df66..15b1aad 100644
          --- a/src/mkerrnos.awk
          +++ b/src/mkerrnos.awk
          @@ -83,7 +83,7 @@ header {
           }
          
           !header {
          -  sub (/\#.+/, "");
          +  sub (/#.+/, "");
             sub (/[      ]+$/, ""); # Strip trailing space and tab characters.
          
             if (/^$/)
          diff --git a/src/mkstrtable.awk b/src/mkstrtable.awk
          index c9de9c1..285e45f 100644
          --- a/src/mkstrtable.awk
          +++ b/src/mkstrtable.awk
          @@ -77,7 +77,7 @@
           #
           # The variable prefix can be used to prepend a string to each message.
           #
          -# The variable namespace can be used to prepend a string to each
          +# The variable pkg_namespace can be used to prepend a string to each
           # variable and macro name.
          
           BEGIN {
          @@ -102,7 +102,7 @@ header {
                 print "/* The purpose of this complex string table is to produce";
                 print "   optimal code with a minimum of relocations.  */";
                 print "";
          -      print "static const char " namespace "msgstr[] = ";
          +      print "static const char " pkg_namespace "msgstr[] = ";
                 header = 0;
               }
             else
          @@ -110,7 +110,7 @@ header {
           }
          
           !header {
          -  sub (/\#.+/, "");
          +  sub (/#.+/, "");
             sub (/[      ]+$/, ""); # Strip trailing space and tab characters.
          
             if (/^$/)
          @@ -150,7 +150,7 @@ END {
             else
               print "  gettext_noop (\"" last_msgstr "\");";
             print "";
          -  print "static const int " namespace "msgidx[] =";
          +  print "static const int " pkg_namespace "msgidx[] =";
             print "  {";
             for (i = 0; i < coded_msgs; i++)
               print "    " pos[i] ",";
          @@ -158,7 +158,7 @@ END {
             print "  };";
             print "";
             print "static GPG_ERR_INLINE int";
          -  print namespace "msgidxof (int code)";
          +  print pkg_namespace "msgidxof (int code)";
             print "{";
             print "  return (0 ? 0";
          
          --
          2.25.1
          
          
          1 Reply Last reply Reply Quote Share 1
          • tigger
            tigger LV 7 last edited by

            又从google找到这个帖子

            再来一个:

            https://bbs.aw-ol.com/topic/186
            使用Ubuntu20.04 LTS编译D1-Tina踩坑记录

            1 Reply Last reply Reply Quote Share 0
            • Referenced by  Kirin Kirin 
            • Referenced by  YuzukiTsuru YuzukiTsuru 
            • Referenced by  YuzukiTsuru YuzukiTsuru 
            • Referenced by  Y YterAA 
            • 1 / 1
            • First post
              Last post

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

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