接上文,修改gcc 的-std标准后,.depend文件处理仍然出现了错误:

五、错误:make中命令报错(sed找不到需要的文件)

错误告警如下

 make -C examples/api all
make[]: 进入目录“/u-boot-2010.09/u-boot-2010.09/examples/api”
sed -i 's/d:\//\/cygdrive\/d\//g' .depend
sed:无法读取 .depend:No such file or directory
make[]: *** 没有规则可以创建“all”需要的目标“.depend”。 停止。
make[]: 离开目录“/u-boot-2010.09/u-boot-2010.09/examples/api”
Makefile:: recipe for target `examples/api' failed
make: *** [examples/api] Error

1、分析
错误提示比较明显,是 examples/api中,没有.depend规则的产生。

而之前 sed命令,是需要.depend文件存在的。

2、解决思路1:首先会想到if...else来实现

又有两种思路,一种是make自身带的,一种是shell工具。该部分单独讨论,不再本文描述。(大家可以自己尝试)

3、解决思路2:先建立一个空.depend文件

原始代码如下:

 $(obj).depend:    $(src)Makefile $(TOPDIR)/config.mk $(SRCS) $(HOSTSRCS)
@rm -f $@
@for f in $(SRCS); do \
g=`basename $$f | sed -e 's/\(.*\)\.\w/\1.o/'`; \
$(CC) -M $(CPPFLAGS) -MQ $(obj)$$g $$f >> $@ ; \
done
@for f in $(HOSTSRCS); do \
g=`basename $$f | sed -e 's/\(.*\)\.\w/\1.o/'`; \
$(HOSTCC) -M $(HOSTCPPFLAGS) -MQ $(obj)$$g $$f >> $@ ; \
done
sed -i 's/d:\//\/cygdrive\/d\//g' $@

只需要在第2行后,增加 touch $@ 即可

4、解决思路3:利用make的忽视错误规则

make 对其规则中调用的外部程序返回的错误可选的应对。

To ignore errors in a recipe line, write a ‘-’ at the beginning of the line’s text

(after theinitial tab). The ‘-’ is discarded before the line is passed to the shell for execution.

可知,如果将“-”放置到调用命令之前,就可以忽视外部命令的错误。

可以利用: - sed -i 's/d:\//\/cygdrive\/d\//g' $@

来忽视相关错误。

扩展:对于include这个内部命令也可以这样用,但还有一种别名:sinclude (相当于 -include)。

前文 autoconf.mk.dep 格式错误时,涉及到sinclude。其主要是解决引用找不到文件等错误,如果文件内部错误,sinclude也无法避免。

详细信息参见:https://www.gnu.org/software/make/manual/make.html#Errors

5、后记

make错误信息含义:

https://www.gnu.org/software/make/manual/make.html#Error-Messages

之前,make的错误为:multiple target patterns. Stop.

 ‘missing target pattern. Stop.’
‘multiple target patterns. Stop.’
‘target pattern contains no ‘%’. Stop.’
‘mixed implicit and static pattern rules. Stop.’
These are generated for malformed static pattern rules.
The first means there’s no pattern in the target section of the rule;
the second means there are multiple patterns in the target section;
the third means the target doesn’t contain a pattern character (%);
and the fourth means that all three parts of the static pattern rule
contain pattern characters (%)–only the first two parts should.
If you see these errors and you aren’t trying to create a static pattern rule,
check the value of any variables in your target and prerequisite lists
to be sure they do not contain colons.

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

基于cygwin构建u-boot(三)make错误忽视的更多相关文章

  1. 基于cygwin构建u-boot(一)环境搭建

    从本文开始,更系统的描述基于cygwin构建u-boot. 之前<痛苦的版本对齐>系列,对于cygwin环境下Sourcery CodeBench,u-boot-1.1.6的构建有侧面的说 ...

  2. 基于cygwin构建u-boot(五)结尾:shell 工具

    结尾,基于cygwin对u-boot的处理,很大一部分都是再处理 路径等相关的问题,只有一个涉及到gcc的参数配置. 为了达到顺利编译的目的,使用shell下的部分工具进行处理. 1.sed sed简 ...

  3. 基于cygwin构建u-boot(四)libgcc引用

    接上文,config.mk文件修改后,即使没有.depend也可以正常处理了: 六.错误:gcclib引用错误 完成之前几篇的工作后,程序就可以一直执行了,直到最后生成u-boot, 出现如下错误告警 ...

  4. 基于cygwin构建u-boot(二)gcc的C语言标准版本号(-std=)

    接上文,修改Makefile和config.mk中,.depend相关文件格式后继续编译. 四.tools文件夹的文件编译错误 错误告警如下[多行信息,请使用右侧滚动条查看]: gcc -Wall - ...

  5. 三十二张图告诉你,Jenkins构建Spring Boot 有多简单~

    持续原创输出,点击上方蓝字关注我 目录 前言 如何安装Jenkins? 环境准备 开始安装Jenkins 初始化配置 访问首页 输入管理员密码 安装插件 创建管理员 实例配置 配置完成 构建Sprin ...

  6. 基于Raft构建弹性伸缩的存储系统的一些实践

    基于Raft构建弹性伸缩的存储系统的一些实践 原创 2016-07-18 黄东旭 聊聊架构 最近几年来,越来越多的文章介绍了 Raft 或者 Paxos 这样的分布式一致性算法,但主要集中在算法细节和 ...

  7. Springboot(一):使用Intellij中的Spring Initializr来快速构建Spring Boot工程

    使用Intellij中的Spring Initializr来快速构建Spring Boot工程 New---Project 可以看到图所示的创建功能窗口.其中Initial Service Url指向 ...

  8. DevOps实践之一:基于Docker构建企业Jenkins CI平台

    基于Docker构建企业Jenkins CI平台 一.什么是CI 持续集成(Continuous integration)是一种软件开发实践,每次集成都通过自动化的构建(包括编译,发布,自动化测试)来 ...

  9. 基于C#程序设计语言的三种组合算法

    目录 基于C#程序设计语言的三种组合算法 1. 总体思路 1.1 前言 1.2 算法思路 1.3 算法需要注意的点 2. 三种组合算法 2.1 普通组合算法 2.2 与自身进行组合的组合算法 2.3 ...

随机推荐

  1. python construct文档

    The Basics Fields Fields are the most fundamental unit of construction: they parse (read data from t ...

  2. webapi 上传图片

    需求:上传学员信息时同时上传头像信息,学员基本信息表和科目表为一对多关系表(添加基本信息后添加通过科目信息).   测试: [HttpPost] public string Post() { if ( ...

  3. oracle分配角色和表空间

    注意点: 1.如果在PL/SQL 等工具里打开的话,直接修改下面的代码中[斜体加粗部分]执行 2.确保路径存在,比如[D:\oracle\oradata\Oracle9i\]也就是你要保存文件的路径存 ...

  4. Java学习笔记--对象克隆

    转自:Edward_qing_Lee 的专栏 http://blog.csdn.net/edward_qing_lee/article/details/8249102 一.java 方法参数 理解: ...

  5. 蚁群算法matlab实现

    大家好,我是小鸭酱,博客地址为:http://www.cnblogs.com/xiaoyajiang 以下用matlab实现蚁群算法:   %蚂蚁算法test   %用产生的一个圆上的十个点来检验蚂蚁 ...

  6. 完美解决android软键盘监听

    最近在做应用性能调优,发现在一个包含有输入框的Activity中,当软键盘弹出的时候,如果直接finish掉此Activity,那么在返回到上一个Activity时,界面的渲染会由于软键盘没有及时的收 ...

  7. jquery easyui根据需求二次开发记录

    1.tree需要显示多个图标 实际需求:设备树上节点需搁三个图片,分别标识运行状态.告警状态.设备类型 解决方法:给tree的iconCls传入一个数组,分别是各状态下的class(css),然后要改 ...

  8. sqlachemy 使用实例

    sqlachemy 是python中关于sql的ORM,他的存在可以消除底层sql引擎的差异,同事也避免了复杂繁琐的sql语句,因此我们在比较大的应用时常使用它,下面是我写的一个例子 #!/usr/b ...

  9. Detecting an Ajax request in PHP

    1:index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset=&q ...

  10. C51的模块化设计方法

    一个大的单片机程序往往包含很多模块,我是这样组织的: 1.每一个C源文件都要建立一个与之名字一样的H文件(头文件),里面仅仅包括该C文件的函数的声明,其他的什么也不会有,比如变量的定义啊等等不应该有. ...