array(2) { ["docs"]=> array(10) { [0]=> array(10) { ["id"]=> string(3) "428" ["text"]=> string(77) "Visual Studio 2017 单独启动MSDN帮助(Microsoft Help Viewer)的方法" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(8) "DonetRen" ["tagsname"]=> string(55) "Visual Studio 2017|MSDN帮助|C#程序|.NET|Help Viewer" ["tagsid"]=> string(23) "[401,402,403,"300",404]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400964" ["_id"]=> string(3) "428" } [1]=> array(10) { ["id"]=> string(3) "427" ["text"]=> string(42) "npm -v;报错 cannot find module "wrapp"" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "zzty" ["tagsname"]=> string(50) "node.js|npm|cannot find module "wrapp“|node" ["tagsid"]=> string(19) "[398,"239",399,400]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400760" ["_id"]=> string(3) "427" } [2]=> array(10) { ["id"]=> string(3) "426" ["text"]=> string(54) "说说css中pt、px、em、rem都扮演了什么角色" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(12) "zhengqiaoyin" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400640" ["_id"]=> string(3) "426" } [3]=> array(10) { ["id"]=> string(3) "425" ["text"]=> string(83) "深入学习JS执行--创建执行上下文(变量对象,作用域链,this)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "Ry-yuan" ["tagsname"]=> string(33) "Javascript|Javascript执行过程" ["tagsid"]=> string(13) "["169","191"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511399901" ["_id"]=> string(3) "425" } [4]=> array(10) { ["id"]=> string(3) "424" ["text"]=> string(30) "C# 排序技术研究与对比" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "vveiliang" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(8) ".Net Dev" ["catesid"]=> string(5) "[199]" ["createtime"]=> string(10) "1511399150" ["_id"]=> string(3) "424" } [5]=> array(10) { ["id"]=> string(3) "423" ["text"]=> string(72) "【算法】小白的算法笔记:快速排序算法的编码和优化" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "penghuwan" ["tagsname"]=> string(6) "算法" ["tagsid"]=> string(7) "["344"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511398109" ["_id"]=> string(3) "423" } [6]=> array(10) { ["id"]=> string(3) "422" ["text"]=> string(64) "JavaScript数据可视化编程学习(二)Flotr2,雷达图" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "chengxs" ["tagsname"]=> string(28) "数据可视化|前端学习" ["tagsid"]=> string(9) "[396,397]" ["catesname"]=> string(18) "前端基本知识" ["catesid"]=> string(5) "[198]" ["createtime"]=> string(10) "1511397800" ["_id"]=> string(3) "422" } [7]=> array(10) { ["id"]=> string(3) "421" ["text"]=> string(36) "C#表达式目录树(Expression)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "wwym" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(4) ".NET" ["catesid"]=> string(7) "["119"]" ["createtime"]=> string(10) "1511397474" ["_id"]=> string(3) "421" } [8]=> array(10) { ["id"]=> string(3) "420" ["text"]=> string(47) "数据结构 队列_队列实例:事件处理" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "idreamo" ["tagsname"]=> string(40) "C语言|数据结构|队列|事件处理" ["tagsid"]=> string(23) "["246","247","248",395]" ["catesname"]=> string(12) "数据结构" ["catesid"]=> string(7) "["133"]" ["createtime"]=> string(10) "1511397279" ["_id"]=> string(3) "420" } [9]=> array(10) { ["id"]=> string(3) "419" ["text"]=> string(47) "久等了,博客园官方Android客户端发布" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(3) "cmt" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511396549" ["_id"]=> string(3) "419" } } ["count"]=> int(200) } 222 基于cygwin构建u-boot(一)环境搭建 - 爱码网

从本文开始,更系统的描述基于cygwin构建u-boot。

之前《痛苦的版本对齐》系列,对于cygwin环境下Sourcery CodeBench,u-boot-1.1.6的构建有侧面的说明,本文主要是对u-boot-2010.09进行说明

一、编译环境

1、cygwin环境参数如下(cygcheck -c),仅截取核心模块。

 1 $ cygcheck -c
 2 Cygwin Package Information
 3 Package              Version              Status
 4 bash                 4.1.10-4             OK
 5 binutils             2.22.51-2            OK
 6 coreutils            8.15-1               OK
 7 cygutils             1.4.10-2             OK
 8 cygwin               1.7.15-1             OK
 9 gawk                 4.0.1-1              OK
10 gcc4-core            4.5.3-3              OK
11 libgcc1              4.5.3-3              OK
12 make                 3.82.90-1            OK
13 sed                  4.2.1-2              OK
14 tar                  1.25-1               OK

2、编译工具链,

CodeSourcery G++ Lite 2009q1-203,

http://www.codesourcery.com/,目前,已经为mentor graphics公司的http://www.mentor.com/embedded-software/codesourcery

下载,lite-edition。基于GCC的版本为 gcc-4.3.3

linux下版本:arm-2009q1-203-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2

windows下版本:arm-2009q1-203-arm-none-linux-gnueabi-i686-mingw32.tar.bz2

 在 cygwin窗口下,需要 配置环境变量,set CYGPATH=D:/cygwin/bin/cygpath

注释:原因参见《痛苦的版本对齐(2) 和时间的相关性》http://www.cnblogs.com/yvivid/p/3541142.html

 

3、u-boot版本:

从u-boot官网上下载,u-boot-2010.09

下载链接:ftp://ftp.denx.de/pub/u-boot/

 

4、上述版本状态,是我尝试的,如果是其他情况,需要自己确认。

 

二、说在前面

1、可以先在Linux系统下验证。

  1)由于u-boot版本是在linux下维护的,虽然支持cygwin,但根据我的验证,问题仍然较多。

  2)可以通过虚拟机构建,如VirtualBox。

  3)上面版本组合,我已经验证

2、U-boot产品开发,建议在linux系统下进行。

  cygwin下,u-boot还是有各种细节问题需要解决(本系列会介绍),但如果要成熟快速开发,Linux是首选。

 

三、初次验证(首次运行的失败,cygwin路径问题)

1、编译命令及错误信息

 1 D:\cygwin\u-boot-2010.09\u-boot-2010.09>set CYGPATH=D:/cygwin/bin/cygpath
 2 
 3 D:\cygwin\u-boot-2010.09\u-boot-2010.09>make CROSS_COMPILE=D:/cygwin/arm-2009q1/bin/arm-none-linux-gnueabi- distclean
 4 
 5 D:\cygwin\u-boot-2010.09\u-boot-2010.09>make CROSS_COMPILE=D:/cygwin/arm-2009q1/bin/arm-none-linux-gnueabi- omap1610inn_config
 6 Configuring for omap1610inn board...
 7 
 8 D:\cygwin\u-boot-2010.09\u-boot-2010.09>make CROSS_COMPILE=D:/cygwin/arm-2009q1/bin/arm-none-linux-gnueabi-
 9 Generating include/autoconf.mk
10 Generating include/autoconf.mk.dep
11 include/autoconf.mk.dep:1: *** multiple target patterns.  Stop.

2、原因
参见《痛苦的版本对齐(3) cygwin下的路径引用》http://www.cnblogs.com/yvivid/p/3546649.html

【原因】make 无法处理异常的冒号 (autoconf.mk.dep中,由于gcc工具产生的windows路径导致)

尝试修改解决

找到 autoconf.mk.dep文件,如下:

 1 include/autoconf.mk: include/common.h \
 2   /u-boot-2010.09/u-boot-2010.09/include/config.h \
 3   /u-boot-2010.09/u-boot-2010.09/include/config_defaults.h \
 4   /u-boot-2010.09/u-boot-2010.09/include/configs/omap1610inn.h \
 5   /u-boot-2010.09/u-boot-2010.09/include/config_cmd_default.h \
 6   /u-boot-2010.09/u-boot-2010.09/include/configs/omap1510.h \
 7   /u-boot-2010.09/u-boot-2010.09/include/asm/arch/sizes.h \
 8   /u-boot-2010.09/u-boot-2010.09/include/asm/config.h \
 9   /u-boot-2010.09/u-boot-2010.09/include/linux/bitops.h \
10   /u-boot-2010.09/u-boot-2010.09/include/asm/types.h \
11   /u-boot-2010.09/u-boot-2010.09/include/asm/bitops.h \
12   /u-boot-2010.09/u-boot-2010.09/include/asm/proc/system.h \
13   /u-boot-2010.09/u-boot-2010.09/include/linux/config.h \
14   /u-boot-2010.09/u-boot-2010.09/include/linux/types.h \
15   /u-boot-2010.09/u-boot-2010.09/include/linux/posix_types.h \
16   /u-boot-2010.09/u-boot-2010.09/include/linux/stddef.h \
17   /u-boot-2010.09/u-boot-2010.09/include/asm/posix_types.h \
18   /u-boot-2010.09/u-boot-2010.09/include/linux/string.h \
19   /u-boot-2010.09/u-boot-2010.09/include/asm/string.h \
20   /u-boot-2010.09/u-boot-2010.09/include/asm/ptrace.h \
21   /u-boot-2010.09/u-boot-2010.09/include/asm/proc/ptrace.h \
22   d:/cygwin/arm-2009q1/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/include/stdarg.h \

 

找到 autoconf.mk.dep的构建(在主文件夹Makefile中)

可以增加 sed 处理: sed -i 's/d:\//\/cygdrive\/d\//g' $@

1 $(obj)include/autoconf.mk.dep: $(obj)include/config.h include/common.h
2     @$(XECHO) Generating $@ ; \
3     set -e ; \
4     : Generate the dependancies ; \
5     $(CC) -x c -DDO_DEPS_ONLY -M $(HOSTCFLAGS) $(CPPFLAGS) \
6         -MQ $(obj)include/autoconf.mk include/common.h > $@
7     sed -i 's/d:\//\/cygdrive\/d\//g' $@

 

3、还是错误,而且,从distclean都开始错误。

1 D:\cygwin\u-boot-2010.09\u-boot-2010.09>make CROSS_COMPILE=D:/cygwin/arm-2009q1/bin/arm-none-linux-gnueabi- distclean
2 include/autoconf.mk.dep:1: *** multiple target patterns.  Stop.
3 
4 D:\cygwin\u-boot-2010.09\u-boot-2010.09>make CROSS_COMPILE=D:/cygwin/arm-2009q1/bin/arm-none-linux-gnueabi- omap1610inn_config
5 include/autoconf.mk.dep:1: *** multiple target patterns.  Stop.
6 
7 D:\cygwin\u-boot-2010.09\u-boot-2010.09>make CROSS_COMPILE=D:/cygwin/arm-2009q1/bin/arm-none-linux-gnueabi-
8 include/autoconf.mk.dep:1: *** multiple target patterns.  Stop.

 

4、分析并解决,

由于 Makefile会 sinclude autoconf.mk.dep,而多余的冒号:直接导致makefile严重的语法错误,而无法执行。

所以需要手动删除 include文件夹下的autoconf.mk.dep,

再编译,该模块就可以通过该错误告警了。

===【未完待续】=== 

 

相关文章: