一乐电子

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

QQ登录

只需一步,快速开始

微信扫码登录

搜索
查看: 4565|回复: 7

MAKEFILE 学习心得

[复制链接]
发表于 2017-5-4 18:49 | 显示全部楼层 |阅读模式
正所谓用之于网络还之于网络,从完全不会到略有所成真是一波三折,学会从网络查找所要的东西的重要性。' Q9 H  g$ k! N5 e! G! b/ P
MAKEFILE 学了差不多半个月了,一值没有放弃,因为真的有用。5 B4 t' \9 v) X7 w2 n1 C; c
学MAKEFILE还是看UBOOT的MAKEFILE ,因为以后不管是ARM也好MIPS 也好都是UBOOT 行头用的就是MAKEFILE生成
  Z8 M1 v1 }+ M; m淘宝上买回来的学习板人家都移植好了你可以不看,但会修改你想要的功能去掉不要的功能都是非常重要的,
$ i* ^! q5 \$ W如果你是搞应用的可以不用学,但如果你是一个比较关心底层的那还是学一下为好,不管怎样看你自己的想法% v, c8 a% ^/ }( z1 Y! i
在这我会不定时将学到的一点心得放上来谢谢大家。0 b4 Z! Q7 y2 q
 楼主| 发表于 2017-5-4 19:31 | 显示全部楼层
本帖最后由 kenson 于 2017-5-4 21:55 编辑
; f1 j) I: v# u/ k) R, i5 V. t# Z
第一7 o3 q  Z2 K. ?3 V) O7 m) m
make 中如果没有配置文件直接make all 产生如下错误
+ V* F, s: S+ @: N9 hSystem not configured - see README
6 o5 D% n: y! f" kMakefile:327: recipe for target 'all' failed* t' r' y4 C' l
make: *** [all] Error 1
7 C/ u+ [# d5 E$ t+ d9 j5 B2 u# @  C0 D+ K% {5 ]
( b& M2 W4 ~4 P
在makefile中有一句  / }; L4 \2 g' p, A5 |& ^
ifeq ($(OBJTREE)/include/config.mk,$(wildcard $(OBJTREE)/include/config.mk))
/ D; ]7 r- F" V' |, M( n3 `也就是判断顶层目录/include下有没有config.mk这个文件如果有就相等如果没有就不相等2 k) {* ^1 F2 f* }( d
其中wildcard 用来扩展OBJTREE 如果没有config.mk它返回为empty 如果就跟第一个条件相同8 z( F* t1 k* @$ R4 R2 ^2 K0 @
否则6 U, y# h6 [. h  J# A* t7 `0 D
else% W/ r8 ]# x: e1 a. Y
all $(obj)u-boot.hex $(obj)u-boot.srec $(obj)u-boot.bin \
5 E) K/ Y/ R. }* |9 |3 s8 J! M# W$(obj)u-boot.img $(obj)u-boot.dis $(obj)u-boot \
# f& f( S; G# v* O$(SUBDIRS) version gdbtools updater env depend \
8 B- k6 F3 U, ydep tags ctags etags $(obj)System.map:
/ Y! g- Q1 p/ F        @echo "System not configured - see README" >&21 d. T; j( w8 V
        @ exit 1$ K& Z. D) h3 D
, I0 y( ?7 u, g5 G6 ~
1 w! S: W6 n' P* h" S7 c

6 \4 C. K% B( @! k
& O' c/ O! |, Q! f, ?
回复

使用道具 举报

 楼主| 发表于 2017-5-4 19:31 | 显示全部楼层
本帖最后由 kenson 于 2017-5-14 12:02 编辑 $ s6 n# e4 J5 n1 C; D/ \" M
. _6 ~& N5 j6 F! q
i686的解释:
1 J# w8 ?' s+ Ci代表intel系列的cpu 。
0 O6 r! K1 j& G6 e5 A! _: `7 p9 s3 o2 A& _& ^5 n; _
386 几乎适用于所有的 x86 平台,不论是旧的 pentum 或者是新的 pentum-IV 与 K7 系列的 CPU等等,都可以正常的工作!那个 i 指的是 Intel 兼容的 CPU 的意思,至于 386 不用说,就是 CPU 的等级啦!
6 q! C- S" x# t5 k
3 w9 P. m. ^. y( D. ^i586 就是 586 等级的计算机,那是哪些呢?包括 pentum 第一代 MMX CPU, AMD 的 K5, K6 系列 CPU ( socket 7 插脚 ) 等等的 CPU 都算是这个等级; ; S3 {4 ]9 u# c+ E. x& J( q

1 w. a( z  H7 I' N  [i686 在 pentun II 以后的 Intel 系列 CPU ,及 K7 以后等级的 CPU 都属于这个 686 等级!' I; I; q9 R  G: Q+ |# q. Q& e
x86_64的解释:
( Y2 x# t( D. ]( N& i, X$ m* T7 j! u
而x86_64就是64位的x(代表不确定。可以是3、4、5、6、)86,是个统称,如果是i686_64也是属于x86_64的。7 K: ~/ b6 U! z4 s" p

  x- ]0 O$ k! L( f( x3 S, ^: E9 U5 ^- Y
( b( g  J1 s1 e! u8 r' B

2 _% E# i# W( [$ Z  Nsed 置换方法 4 ~% t6 k9 R9 v: y. w: p

3 c7 }; A4 b# a' S0 F5 g5 F. ~archi = $(shell uname -m | sed  s/i.86/i386/)% t* ~* \5 Q& U6 Y3 @4 D
#i.86 跟i686
& W* |# o, g* W: ^6 U$ h. H
3 p3 _/ Z6 e- ^: v+ H9 b# n2 T/ E; e8 U/ F
all:7 Y/ r% C2 E# t3 u: ~! R) \
        @echo $(archi)
8 m3 K' o) N. r5 Z: N) ?! l) G" W" w6 t
* D+ V# [% I5 X9 v
回复

使用道具 举报

 楼主| 发表于 2017-5-4 19:31 | 显示全部楼层
本帖最后由 kenson 于 2017-5-14 12:55 编辑
1 l8 r# m0 w. y  ~6 E7 r  I1 R- [( s& N; Q
关于文件是否存在的问题,在语句4 b0 N9 x' m! Q5 ?# \9 Q4 M
ifneq($(curdir)/xxx.mk,$(wildcard $(CURDIR)/xxx.mk))
5 w2 w6 {* O( V! g  B! H在展开第一语句中有或没有都会展开CURDIR/xxx.mk
6 ]. Q  L+ v- m; A$ s1 l! X而wildcard中有就展开没有就返回为空。) _& C4 z  `7 a4 g
回复

使用道具 举报

 楼主| 发表于 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-8-20 09:04 , Processed in 0.036306 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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