【加精】在Ubuntu21.04中编译Tina SDKV1.01 版本 踩坑记录
-
前言
本人使用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)) ####
嘻嘻!
-
@bedrock 感谢小大佬的分享,官方将送出麦克风子板一块作为分享奖励。更多交流欢迎加入全志在线官方交流qq群:498263967
-
关于以上的问题三
可以尝试增加一个文件:
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
-
-
-
-
-
Copyright © 2023 深圳全志在线有限公司 粤ICP备2021084185号 粤公网安备44030502007680号