今天在移植u-boot使其支持nand flash启动的时候,在最后编译的时候出现问题,一路追踪代码,错误提示如下:

提示我对一个函数未定义,可是我已经定义了,这时候我发现是否是函数在编译的时候,哪个模块没有被编译进去,或者编译顺序出现了问题,上面提示里面的函数都在一个文件里面,就是nand_rean_b.c这个文件,于是我回头查看我的u-boot.lds和该文件目录下的Makefile文件,这时候看到Makefile是这样子的:

obj-y := mini2440.o
obj-y := nand_read_b.o
obj-y += lowlevel_init.o

我将其修改为如下:

obj-y:= mini2440.o
obj-y+= nand_read_b.o
obj-y+= lowlevel_init.o

就将:变成了+号,然后编译,通过,没有任何问题。

后来查找网上资料,找到如下解释:

= 是最基本的赋值
    := 是覆盖之前的值
    ?= 是如果没有被赋值过就赋予等号后面的值
    += 是添加等号后面的值

1、“=”

make会将整个makefile展开后,再决定变量的值。也就是说,变量的值将会是整个makefile中最后被指定的值。看例子:

x = foo
            y = $(x) bar
            x = xyz

在上例中,y的值将会是 xyz bar ,而不是 foo bar 。

2、“:=”

“:=”表示变量的值决定于它在makefile中的位置,而不是整个makefile展开后的最终值。

x := foo
            y := $(x) bar
            x := xyz

在上例中,y的值将会是 foo bar ,而不是 xyz bar 了。

看来,这里在生成built-in.o的时候,如果使用:似乎编译顺序会不对,导致调用函数被编译在了声明函数之前。这是我目前的理解,网上也没有找到具体的答案,都是在问obj-y 和obj-m的区别,在此贴出来也希望大家以后在遇到这类问题的时候能有个参考吧。

obj-y +=和obj-y :=的区别相关推荐

  1. SimpleDateFormat大写Y和小写y的区别

    刚刚过完元旦,原本平时执行正常的每日任务 居然在2018-12-31 号那天没执行. 经过排查问题出现在时间格式化 SimpleDateFormat dateFormat = new SimpleDa ...

  2. obj.name 与 obj[name]语法的区别

    obj.name ==> obj["name"] 底层的自动转化,所以直接写 obj["name"] 效率会高一些 var obj = {name: &q ...

  3. I(X,Y;Z),I(X;Y;Z)之间的区别

    I(X;Y;Z)三方交互信息(或,三元互信息) 当有三个随机变量时他们之间各种熵和互信息之间关系如下图所示,可以看到中间那部分就是 I ( X ; Y ; Z ) I(X;Y;Z) I(X;Y;Z) ...

  4. OpenGL学习脚印:模型加载初步-加载obj模型(load obj model)

    写在前面 前面介绍了光照基础内容,以及材质和lighting maps,和光源类型,我们对使用光照增强场景真实感有了一定了解.但是到目前为止,我们通过在程序中指定的立方体数据,绘制立方体,看起来还是很 ...

  5. JAVA 的++y(--y)和y++(y--) 用法

    作者:孙英鹏 撰写时间:2019年4月18日 JAVA 的++y(–y)和y++(y–) 用法 今天要讲的是JAVA运算符,想必大家都知道运算符是什么,最简单的无非就是加.减.乘.除(+.-.*.%) ...

  6. R语言ggplot2可视化绘制带有双y轴(double y axis)的分面图(facet、facet_grid)

    R语言ggplot2可视化绘制带有双y轴(double y axis)的分面图(facet.facet_grid) 目录 R语言ggplot2可视化绘制带有双y轴(double y axis)的分面图 ...

  7. hdu4282 x^z+y^z+x*y*z=k 解的个数

    题意:      x^z + y^z + x*y*z = k; (x < y ,z > 1),给你一个k问有多少组解. 思路:        暴力枚举z,y,然后二分查找x.注意一点最好用 ...

  8. 关于max(X,Y),min(X,Y)

    令U=max(X,Y),V=min(X,Y)U = max(X,Y), V = min(X,Y),可以得到: UV=XY;U+V=X+Y;U−V=|X−Y|; UV = XY; \\ U+V = X+ ...

  9. matlab 双y轴 三y轴

    双y轴 [ax,h1,h2]=plotyy(1:72,nw(:,4),1:72,nw(:,3)); set(h1,'linestyle','-','marker','o','LineWidth',1. ...

  10. 对偶式与反函数_函数Y =A(B+C)的对偶式Y’= 和反函数`Y=

    函数Y =A(B+C)的对偶式Y'= 和反函数`Y= 答:A+BC;Y'=A'+B'C' The __________ is the national symbol of Russia and lon ...

最新文章

  1. android 自定义音乐圆形进度条,Android自定义View实现音频播放圆形进度条
  2. mysql5.7 忘记root密码后,如何找回密码?
  3. linux操作系统之线程
  4. 详析 Kubernetes 在边缘计算领域的发展
  5. python调用函数_Python 函数中的 4 种参数类型
  6. Kali Linux 网络扫描秘籍 第四章 指纹识别(一)
  7. jetty java 文件下载_Jetty 嵌入式开发之文件浏览和文件下载
  8. 小文件复制为什么那么慢_为什么最近手机网速那么慢?原因是……
  9. 新入行的包工头,一定做好下面几点
  10. java trim 换行符_JAVA去掉字符串左右两边的回车、空格、制表符、换行符
  11. SQLyog 激活 注册码
  12. Quantum Machine Learning——QML学习记录00
  13. xampp使用教程php,php集成套件服务器xampp安装使用教程
  14. 用Java写一个随机排序的功能
  15. 在超市使用室内地图的5个好处
  16. html caption属性的值,然后在属性面板中更改控件的Caption属性值
  17. RROR: Check hive‘s usability failed, please check the status of your cluster解决办法
  18. 【解决方案】“云-端协同”打造基于安防视频云服务EasyCVR的雪亮工程监管视频平台
  19. CentOS(tlinux)安装php55w失败,Requires: libjpeg.so.62(LIBJPEG_6.2)(64bit)解决办法
  20. 基于yoloV7-pose添加任意关键点 + 多类别分类网络修改

热门文章

  1. SCON串行使用波特率计算和设置
  2. 001-课程体系以及环境搭建
  3. 火车头本地文档批量翻译工具
  4. 火车头抓取阿里巴巴内容页
  5. 工业智能网关BL110应用之19:实现三菱 PLC FX2N 接入MQTT Client One云平台
  6. miui 8.2 android版本下载,小米日历apk 8.0下载
  7. 计算机起源英语短文,有关计算机发展史的英语短文
  8. 安装SQL2000时出现:安装程序配置服务器失败。参考服务器错误日志和 C:/WINDOWS/sqlstp.log 了解更多信息。
  9. android 手机同时使用wifi 和数据流量(3G/4G...)
  10. 面试题之如何实现一个深拷贝