一乐电子

 找回密码
 请使用微信账号登录和注册会员

QQ登录

只需一步,快速开始

微信扫码登录

手机号码,快捷登录

手机号码,快捷登录

搜索
查看: 5206|回复: 7

MAKEFILE 学习心得

[复制链接]
发表于 2017-5-4 18:49 | 显示全部楼层 |阅读模式
正所谓用之于网络还之于网络,从完全不会到略有所成真是一波三折,学会从网络查找所要的东西的重要性。6 u" I3 J  t+ c' {# d$ y* s
MAKEFILE 学了差不多半个月了,一值没有放弃,因为真的有用。8 X1 b, i  i0 ^
学MAKEFILE还是看UBOOT的MAKEFILE ,因为以后不管是ARM也好MIPS 也好都是UBOOT 行头用的就是MAKEFILE生成
/ P; e- r: V( x' G7 K  T2 |淘宝上买回来的学习板人家都移植好了你可以不看,但会修改你想要的功能去掉不要的功能都是非常重要的,
, r( H" U4 a/ a# d如果你是搞应用的可以不用学,但如果你是一个比较关心底层的那还是学一下为好,不管怎样看你自己的想法
  h- F3 {# _$ e% z2 E2 J4 ^在这我会不定时将学到的一点心得放上来谢谢大家。
6 A8 S. h# M; Y) K! h/ o9 n. u
 楼主| 发表于 2017-5-4 19:31 | 显示全部楼层
本帖最后由 kenson 于 2017-5-4 21:55 编辑
% u2 ?+ J, z# P( V5 @% u. m4 J- X5 E& w4 \  q. R
第一1 a  A8 _3 o+ Q) a
make 中如果没有配置文件直接make all 产生如下错误
6 x+ N4 z5 C5 E, tSystem not configured - see README8 R7 o9 R) K. ]& c3 p
Makefile:327: recipe for target 'all' failed3 c, U8 t& v9 B7 |9 u1 P% ]6 a
make: *** [all] Error 1
5 R. y2 U, t7 h! m) {0 R* H2 w' j7 V% g- u. G
, _5 P6 x1 W9 |+ M( ]
在makefile中有一句  # i$ l0 I6 z9 Z1 K6 Z/ N9 N! D! \
ifeq ($(OBJTREE)/include/config.mk,$(wildcard $(OBJTREE)/include/config.mk))
, ?  Z0 f- M, \; [- ]8 S也就是判断顶层目录/include下有没有config.mk这个文件如果有就相等如果没有就不相等! D9 g% B% N9 m- [6 E& d7 w
其中wildcard 用来扩展OBJTREE 如果没有config.mk它返回为empty 如果就跟第一个条件相同& O! e7 g# K% X1 h+ ~
否则
0 W! }2 n: O/ d: V! A0 y5 Zelse
2 m9 B4 i, L& N( `( u7 S5 w7 Y% ^all $(obj)u-boot.hex $(obj)u-boot.srec $(obj)u-boot.bin \& n. W; Q# y2 I4 e! ?& b' q1 F  F
$(obj)u-boot.img $(obj)u-boot.dis $(obj)u-boot \6 Q+ X: E9 e& A1 `! n: Z
$(SUBDIRS) version gdbtools updater env depend \
( A* D/ ?6 m; J$ O" g, Pdep tags ctags etags $(obj)System.map:$ I/ i$ e4 L' t! d
        @echo "System not configured - see README" >&2
, `+ L8 r" x9 J/ q        @ exit 1
2 {4 @5 x* [! S" g  r" Y
9 O9 B: {, Y% b2 a' J8 u: J' U0 f. e: D. O
0 ^3 {: Q4 q; P* I

4 N+ t7 d" W0 Y) B* q! d
回复

使用道具 举报

 楼主| 发表于 2017-5-4 19:31 | 显示全部楼层
本帖最后由 kenson 于 2017-5-14 12:02 编辑 " m; u. \6 z$ {9 |
+ `: n& w& P. _" Z, o- a+ G+ C" u
i686的解释:  M/ j' G4 D  d2 ^2 B1 w, o; d
i代表intel系列的cpu 。
( U, I% I/ @& w- q( F! ^
4 Z* u2 _+ b4 ]0 z/ k7 O386 几乎适用于所有的 x86 平台,不论是旧的 pentum 或者是新的 pentum-IV 与 K7 系列的 CPU等等,都可以正常的工作!那个 i 指的是 Intel 兼容的 CPU 的意思,至于 386 不用说,就是 CPU 的等级啦! ! C6 V8 x4 F- M, W$ B7 F5 P) [2 @
1 v% C0 ?/ [9 m: ]" a
i586 就是 586 等级的计算机,那是哪些呢?包括 pentum 第一代 MMX CPU, AMD 的 K5, K6 系列 CPU ( socket 7 插脚 ) 等等的 CPU 都算是这个等级; / H8 ~/ Q3 R5 W0 ]( W0 |9 @6 Y

3 u9 r% w  d: Vi686 在 pentun II 以后的 Intel 系列 CPU ,及 K7 以后等级的 CPU 都属于这个 686 等级!. b' e' Z$ b) _, S, W) |
x86_64的解释:
, F$ u. u6 g7 T2 Q. c. Y5 Y9 ~* v' t( e, \" h* w. ^* G- Q
而x86_64就是64位的x(代表不确定。可以是3、4、5、6、)86,是个统称,如果是i686_64也是属于x86_64的。
/ H! Z6 y# w% r) w( o8 A
1 q4 x" i) M: ~8 h6 k/ V- z$ X9 O4 l$ j8 i* B
. P5 W: q. [# _

+ Y5 T' b- O, @3 L3 B( O+ Ksed 置换方法 3 ?' m0 s" c; `
' |1 f1 W% o% |9 N5 b
archi = $(shell uname -m | sed  s/i.86/i386/)
) ?7 X" ]& |" g#i.86 跟i686
& P. u( M2 ]. ^; M6 e  l& s: Y0 y' L. P7 R5 G5 O' L' E, P& V  A$ g( Q) q
: t4 n0 D& L6 U' F
all:+ |& S5 m/ M, w# K% R+ |( e9 Q
        @echo $(archi)' y  y9 m$ i/ a" Y5 N
8 b9 i. \3 z! A
回复

使用道具 举报

 楼主| 发表于 2017-5-4 19:31 | 显示全部楼层
本帖最后由 kenson 于 2017-5-14 12:55 编辑 # }1 p1 S: u+ _% V8 v
$ J9 q6 w, ^" ]& ^" }" n
关于文件是否存在的问题,在语句9 Z5 s2 J; w( S3 y8 w8 K0 P4 O
ifneq($(curdir)/xxx.mk,$(wildcard $(CURDIR)/xxx.mk)), |$ L$ ~8 s9 i8 m& J$ }, e2 a
在展开第一语句中有或没有都会展开CURDIR/xxx.mk- Q$ @7 Z8 |4 F
而wildcard中有就展开没有就返回为空。8 l6 t4 Q1 s2 i' x" _* O9 j. S
回复

使用道具 举报

 楼主| 发表于 2017-5-4 19:31 | 显示全部楼层
reserve
回复

使用道具 举报

 楼主| 发表于 2017-5-4 19:31 | 显示全部楼层
reserve
回复

使用道具 举报

 楼主| 发表于 2017-5-4 19:31 | 显示全部楼层
reserve
回复

使用道具 举报

 楼主| 发表于 2017-5-4 19:32 | 显示全部楼层
reserve
回复

使用道具 举报

本版积分规则

QQ|一淘宝店|手机版|商店|一乐电子 ( 粤ICP备09076165号 ) 公安备案粤公网安备 44522102000183号

GMT+8, 2026-4-17 16:29 , Processed in 0.033511 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表