拿到板子有一周了就先不上开箱照了,板卡的版本号是V5_0_1好像比其他人新。我在toolchain、Kernel、buildroot上耗费了大量时间。主要是因为wiki.espressobin.net上的文档都是在GCC5.*下编译的。而Ubuntu16.10的GCC是6.*。下面小结一下,可能有一些问题其他人也遇到过。希望能抛砖引玉。大神们请斧正。软件环境环境: 1、vritualbox5.1.22 2、Ubuntu16.10,gcc版本6.2(后面文章必须要用到16.10所以用16.10编译的)
一、toolchain篇 Q:toolchain问题 A:Toolchain 按照网页教程基本没啥难度,设置完毕后通过以下3个命令检查一下是否生效即可。 - espresso@bin:~$ echo $PATH
- espresso@bin:~$ export
- espresso@bin:~$ aarch64-linux-gnu-gcc -v
复制代码Shell下export实现: echo $PATH 用于查看当前PATH的值 export 用于查看其路径
即可确定是否没问题。
二、kernel篇
Q:编译过程中偶然发现目录显示arch/x86 ,显然不对
A:不知道为啥CROSS_COMPILE设定没生效(PATH在.profile里写入就生效了而export的CROSS_COMPILE和ARCH前面通过命令查看了也生效了啊)。干脆直接在make命令后加上CROSS_COMPILE路径- sudo make –j3 ARCH=arm64 CROSS_COMPILE=/home/espresso/toolchain/gcc-linaro-5.2-2015.11-2-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-
复制代码现在目录正常了。
Q: make mvebu_v8_lsp_defconfig出错
A:发现 Kernel根目录的.config里面内容也不对,看了一下指向的代码的具体内容 kernel/4.48/linux-marvel/Makefile:531 kernel/4.48/linux-marvel/script/kconfig/Makefile:110
不知道为啥ARCH=arm64没生效(跟我在.profile里设定没在.bashrc里设定有关?)所以呆萌地去x86的arch目录里去找mvebu_v8_lsp_defconfig[size=13.63636302948px]当然找不到了。所以要告知它。执行make加上ARCH参数就OK了。 - sudo make ARCH=arm64 mvebu_v8_lsp_defconfig
复制代码 三、 buildroot篇Q:buildroot少数软件下载不下来。 A: 少数软件所在的网址被墙。如图就是其中之一。 A:换时间换网络下载。
Q: 错误gdate.c:2497:7: error:format not a string literal, format string not checked[-Werror=format-nonliteral]
A: 参考:https://dev.openwrt.org/ticket/22193 修改gdate.c的代码 - +--- glib/gdate.c.orig 2014-12-19 21:49:48.000000000 +0000
- ++++ glib/gdate.c
- +@@ -2494,7 +2494,10 @@ g_date_strftime (gchar *s,
- + * recognize whether strftime actually failed or just returned "".
- + */
- + tmpbuf[0] = '\1';
- ++ #pragma GCC diagnostic push
- ++ #pragma GCC diagnostic ignored "-Wformat-nonliteral"
- + tmplen = strftime (tmpbuf, tmpbufsize, locale_format, &tm);
- ++ #pragma GCC diagnostic pop
- +
- + if (tmplen == 0 && tmpbuf[0] != '\0')
- + {
复制代码所添加的代码的具体含义和原因可以参考以下网址: https://gcc.gnu.org/onlinedocs/gcc/Diagnostic-Pragmas.html
Q:错误 - /bin/bash: line 9: makeinfo: command not found
复制代码A:shell下安装sudo apt-get install texinfo
Q:lzop软件生成错误 A:因为被GCC6.*编译了,所以lzop软件的miniacc.h的代码需要修改(GCC5.*可能不出现该问题) - +--- a/src/miniacc.h.orig 2016-02-10 16:09:23.247315866 +0100
- ++++ b/src/miniacc.h 2016-02-10 16:12:14.973297054 +0100
- +@@ -4469,12 +4469,12 @@
- + #if defined(__MSDOS__) && defined(__TURBOC__) && (__TURBOC__ < 0x0150)
- + #elif 1 && (ACC_CC_SUNPROC) && !defined(ACCCHK_CFG_PEDANTIC)
- + #else
- +- ACCCHK_ASSERT((1 << (8*SIZEOF_INT-1)) < 0)
- ++ ACCCHK_ASSERT((int)(1u << (8*SIZEOF_INT-1)) < 0)
- + #endif
- + ACCCHK_ASSERT((1u << (8*SIZEOF_INT-1)) > 0)
- + #if 1 && (ACC_CC_SUNPROC) && !defined(ACCCHK_CFG_PEDANTIC)
- + #else
- +- ACCCHK_ASSERT((1l << (8*SIZEOF_LONG-1)) < 0)
- ++ ACCCHK_ASSERT((long)(1ul << (8*SIZEOF_LONG-1)) < 0)
- + #endif
- + ACCCHK_ASSERT((1ul << (8*SIZEOF_LONG-1)) > 0)
- + #if defined(acc_int16e_t)
- +@@ -4703,7 +4703,7 @@
- + #elif 1 && (ACC_CC_LCC || ACC_CC_LCCWIN32) && !defined(ACCCHK_CFG_PEDANTIC)
- + #elif 1 && (ACC_CC_SUNPROC) && !defined(ACCCHK_CFG_PEDANTIC)
- + #elif !(ACC_BROKEN_INTEGRAL_PROMOTION) && (SIZEOF_INT > 1)
- +- ACCCHK_ASSERT( (((unsigned char)128) << (int)(8*sizeof(int)-8)) < 0)
- ++ ACCCHK_ASSERT( (int)((unsigned int)((unsigned char)128) << (int)(8*sizeof(int)-8)) < 0)
- + #endif
- + #if (ACC_CC_BORLANDC && (__BORLANDC__ >= 0x0530) && (__BORLANDC__ < 0x0560))
- + # pragma option pop
复制代码
以上几个错误基本是因为使用GCC6.*版本带来的。不过还好基本都解决了。 上1张这三个家伙占用磁盘空间的图。想编译buildroot的同志们做好心理准备
|