一乐电子

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

QQ登录

只需一步,快速开始

微信扫码登录

手机号码,快捷登录

手机号码,快捷登录

搜索
查看: 4759|回复: 7

MAKEFILE 学习心得

[复制链接]
发表于 2017-5-4 18:49 | 显示全部楼层 |阅读模式
正所谓用之于网络还之于网络,从完全不会到略有所成真是一波三折,学会从网络查找所要的东西的重要性。
. S5 h; n0 j% u2 k3 ~# N* T' Z) a) ~MAKEFILE 学了差不多半个月了,一值没有放弃,因为真的有用。
4 t9 u; O' E* c9 k6 v; l) J, o学MAKEFILE还是看UBOOT的MAKEFILE ,因为以后不管是ARM也好MIPS 也好都是UBOOT 行头用的就是MAKEFILE生成
1 J' H! ^  v/ K; s3 }& P淘宝上买回来的学习板人家都移植好了你可以不看,但会修改你想要的功能去掉不要的功能都是非常重要的,' J$ N! w9 A4 ^# x4 q9 }( o, b
如果你是搞应用的可以不用学,但如果你是一个比较关心底层的那还是学一下为好,不管怎样看你自己的想法
5 w. X, e* Z6 i# R/ Z* u+ h" X$ r在这我会不定时将学到的一点心得放上来谢谢大家。4 Q# M& |) t! o  {( m9 L
 楼主| 发表于 2017-5-4 19:31 | 显示全部楼层
本帖最后由 kenson 于 2017-5-4 21:55 编辑 1 u* u) B" M5 a% Y. g# z/ l8 v

" `: H$ W  F8 ^" j8 u) n* M第一) X# S% m& ]' e, k$ t
make 中如果没有配置文件直接make all 产生如下错误
2 ~3 L" j# U  E0 gSystem not configured - see README# h1 e; Y6 ^$ _& E
Makefile:327: recipe for target 'all' failed9 d; F4 ~+ V) }
make: *** [all] Error 1
& p  l$ s* m& B: E+ Q2 O* e- V* {6 I5 C

: S2 `" s+ c8 \8 q在makefile中有一句  
! w6 }: R& k5 \0 @2 e& Kifeq ($(OBJTREE)/include/config.mk,$(wildcard $(OBJTREE)/include/config.mk)), X/ a" r6 z& [9 Q* J) Q
也就是判断顶层目录/include下有没有config.mk这个文件如果有就相等如果没有就不相等! f$ b- e( C8 n. _, {* S
其中wildcard 用来扩展OBJTREE 如果没有config.mk它返回为empty 如果就跟第一个条件相同% U- M* ^5 {, ~; D6 P8 o2 ?
否则
  I* M* \: H+ n, A' I3 Velse
, d' E( z& J2 I# C) fall $(obj)u-boot.hex $(obj)u-boot.srec $(obj)u-boot.bin \
8 D$ r1 `2 n# y' n  C/ A$(obj)u-boot.img $(obj)u-boot.dis $(obj)u-boot \9 }/ A1 R! C1 ~
$(SUBDIRS) version gdbtools updater env depend \2 w& \/ b7 t+ r: W! c
dep tags ctags etags $(obj)System.map:
$ J9 ]; M1 g: _) f. v4 R  V        @echo "System not configured - see README" >&2
$ |' d1 k5 k" z  X7 C# g7 s        @ exit 1
/ y% [$ j$ u) I" X$ o4 ^1 R: o1 ?' L& c( Z& I/ |* D

' M/ b1 Z. C6 m) R5 I7 m4 E$ K+ \; I' w5 _8 M5 {* {9 y8 w2 g
6 B( j' H: Y  U7 O
回复

使用道具 举报

 楼主| 发表于 2017-5-4 19:31 | 显示全部楼层
本帖最后由 kenson 于 2017-5-14 12:02 编辑
5 T% ^3 P5 D- v& a; L$ m; T; T! k2 M8 V* P
i686的解释:
5 _8 C' e4 y3 Z3 V6 W8 @, ei代表intel系列的cpu 。' Y# ]. r9 U) K- f5 V

/ R1 ~7 H* p  c6 X, V+ k386 几乎适用于所有的 x86 平台,不论是旧的 pentum 或者是新的 pentum-IV 与 K7 系列的 CPU等等,都可以正常的工作!那个 i 指的是 Intel 兼容的 CPU 的意思,至于 386 不用说,就是 CPU 的等级啦!
* p) _4 Q. k% G3 B5 K: Z5 J% p3 b2 m2 o* z+ `; `
i586 就是 586 等级的计算机,那是哪些呢?包括 pentum 第一代 MMX CPU, AMD 的 K5, K6 系列 CPU ( socket 7 插脚 ) 等等的 CPU 都算是这个等级;
" B/ D5 f. L; `4 r  d  J9 q6 m/ b8 R( t$ n* |8 x) m& R9 v
i686 在 pentun II 以后的 Intel 系列 CPU ,及 K7 以后等级的 CPU 都属于这个 686 等级!/ _1 l! m' P2 M
x86_64的解释:
8 }: F" i5 T$ V- ~3 n" b4 P1 H6 L1 ~
而x86_64就是64位的x(代表不确定。可以是3、4、5、6、)86,是个统称,如果是i686_64也是属于x86_64的。
' t0 F  V% J, l3 ?$ `4 `9 M0 k2 x( ]. e' y/ [
! ^) e; }5 T6 r4 B; P# u& a+ g
9 h% a; ^( I+ I, s

5 n" Q; j* K" k+ {sed 置换方法 # q  \' p  p& F5 C% D5 t
  Q/ t" A) q/ C1 g0 H
archi = $(shell uname -m | sed  s/i.86/i386/)
" M* j/ h& A6 C( c" Z4 z#i.86 跟i6864 [, d) X0 ^% j- g* I

( Z& V$ R; A7 t
: m9 s6 w1 {/ _0 Y% o  hall:
  K* P; k% Q6 A- U3 p        @echo $(archi)
; ?# o6 q7 g1 o' }# ^) H; b0 [8 O1 G2 E- ?( m$ @" W! |6 }# p
回复

使用道具 举报

 楼主| 发表于 2017-5-4 19:31 | 显示全部楼层
本帖最后由 kenson 于 2017-5-14 12:55 编辑 5 N& A) S8 _) ]' }# d/ ^* ~' M
+ o, [) b, B$ V
关于文件是否存在的问题,在语句
* V( c% z, n* S: n+ {- vifneq($(curdir)/xxx.mk,$(wildcard $(CURDIR)/xxx.mk))
* ~, [0 S9 B: m8 H在展开第一语句中有或没有都会展开CURDIR/xxx.mk. M+ E: r7 Z" R- H) w- w9 v, w! i
而wildcard中有就展开没有就返回为空。
2 d" c) e' l% Q, \2 T
回复

使用道具 举报

 楼主| 发表于 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, 2025-10-27 09:32 , Processed in 0.036776 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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