一乐电子

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

QQ登录

只需一步,快速开始

微信扫码登录

手机号码,快捷登录

手机号码,快捷登录

搜索
查看: 4971|回复: 7

MAKEFILE 学习心得

[复制链接]
发表于 2017-5-4 18:49 | 显示全部楼层 |阅读模式
正所谓用之于网络还之于网络,从完全不会到略有所成真是一波三折,学会从网络查找所要的东西的重要性。, G2 l7 ]/ d. ?, q: ?+ y
MAKEFILE 学了差不多半个月了,一值没有放弃,因为真的有用。
( m7 j: r, I$ @: n8 U学MAKEFILE还是看UBOOT的MAKEFILE ,因为以后不管是ARM也好MIPS 也好都是UBOOT 行头用的就是MAKEFILE生成
& x: b% N& D' l0 p" a; e; r淘宝上买回来的学习板人家都移植好了你可以不看,但会修改你想要的功能去掉不要的功能都是非常重要的,
, s+ R% E2 _( C( i1 F2 |如果你是搞应用的可以不用学,但如果你是一个比较关心底层的那还是学一下为好,不管怎样看你自己的想法
" n+ m$ |) y/ O+ p2 O. A在这我会不定时将学到的一点心得放上来谢谢大家。
" \6 p! t3 Z, l
 楼主| 发表于 2017-5-4 19:31 | 显示全部楼层
本帖最后由 kenson 于 2017-5-4 21:55 编辑 " v, T0 ?$ B( i/ H8 ]

8 |* q5 j8 p: ~第一
% n5 C& m$ E6 vmake 中如果没有配置文件直接make all 产生如下错误2 ]" e- |& M, K+ ]
System not configured - see README: J# m- _: m7 V( a9 ^' _
Makefile:327: recipe for target 'all' failed
4 S  f. _. z; ]make: *** [all] Error 1
( _5 p" |8 h# M' ~5 Q% g2 q7 t" D7 i2 R+ r" q& C6 P

5 ?. ^" ~4 `; R( \) {在makefile中有一句  
; X5 e, i, q* m1 W8 I8 n! Difeq ($(OBJTREE)/include/config.mk,$(wildcard $(OBJTREE)/include/config.mk))+ f! t$ ^# D6 z- {
也就是判断顶层目录/include下有没有config.mk这个文件如果有就相等如果没有就不相等- N' I# W' R( h7 u% D5 h* m
其中wildcard 用来扩展OBJTREE 如果没有config.mk它返回为empty 如果就跟第一个条件相同7 R# m! S" [+ `) _4 n: x: m
否则1 F' ~' P7 ?2 i. n4 q, P5 ~
else* S) p) W2 p7 n2 h  l
all $(obj)u-boot.hex $(obj)u-boot.srec $(obj)u-boot.bin \" Y; M4 Z6 R! S( }: |# o" c& k
$(obj)u-boot.img $(obj)u-boot.dis $(obj)u-boot \
6 D4 C: `7 Z; H# q* \$(SUBDIRS) version gdbtools updater env depend \
8 W, M4 A+ j3 {, \dep tags ctags etags $(obj)System.map:# J5 h/ |9 m% F
        @echo "System not configured - see README" >&22 {5 e# n" Q7 D0 J& B  n; I
        @ exit 1
9 \6 `* k4 h5 [3 o, E6 X" K
* H( ]7 v/ x! Z1 g
' k$ A/ P2 j& ~# r' q# u2 H1 i- q5 |

8 n$ d8 y7 q& D' U* u) {! T
回复

使用道具 举报

 楼主| 发表于 2017-5-4 19:31 | 显示全部楼层
本帖最后由 kenson 于 2017-5-14 12:02 编辑
9 g0 j$ g) _) e: V
8 @! @' U( u0 Q4 ~0 si686的解释:$ x4 E1 V( R6 \4 m0 U+ `' |: u
i代表intel系列的cpu 。( \! F8 l, u$ u6 p1 p
" [0 C% d8 W1 Z
386 几乎适用于所有的 x86 平台,不论是旧的 pentum 或者是新的 pentum-IV 与 K7 系列的 CPU等等,都可以正常的工作!那个 i 指的是 Intel 兼容的 CPU 的意思,至于 386 不用说,就是 CPU 的等级啦! . w8 d. z+ G; G

1 d7 y7 H" A/ l8 L9 S% ki586 就是 586 等级的计算机,那是哪些呢?包括 pentum 第一代 MMX CPU, AMD 的 K5, K6 系列 CPU ( socket 7 插脚 ) 等等的 CPU 都算是这个等级;
4 f- [1 C: X# K5 U* j6 O/ }# ~9 _" O! c' {* {, z1 e
i686 在 pentun II 以后的 Intel 系列 CPU ,及 K7 以后等级的 CPU 都属于这个 686 等级!$ f9 J8 x& _7 g, W9 F( E* h
x86_64的解释:
; y; _( {, Y# b5 I  S
  N( [# j; m  A而x86_64就是64位的x(代表不确定。可以是3、4、5、6、)86,是个统称,如果是i686_64也是属于x86_64的。+ ]0 P& q% R& N( {4 u( W

( J4 n5 [) s0 V% \, k: a3 Q* @  G
1 b* V+ K9 Q3 \( V$ ?0 x9 ~, ?9 j7 M$ r# T
9 O( F/ |& x+ t! G6 D7 J
sed 置换方法
& ]9 ~+ b0 d' p- ]8 C$ w- Z1 ^! V, D) S/ R5 J# D
archi = $(shell uname -m | sed  s/i.86/i386/)
# m5 R! `# Q7 U: S0 i0 v#i.86 跟i686
' M; s7 c, \6 c. M) J, z5 L: |2 F
8 G3 [  Z/ R, e; {0 K- s6 N# k4 `. ]! Z3 U; Y% m
all:
7 J& _2 z' W" k: q/ K        @echo $(archi)9 }: Y" o: s. C: c7 H& N5 f+ e
% P9 }' p- {7 D& `6 S4 c
回复

使用道具 举报

 楼主| 发表于 2017-5-4 19:31 | 显示全部楼层
本帖最后由 kenson 于 2017-5-14 12:55 编辑 7 q; ]8 J* E' @( z$ ?) u

2 Y& X2 z0 \' z% @关于文件是否存在的问题,在语句
: g& f/ e2 e! @# F% ]ifneq($(curdir)/xxx.mk,$(wildcard $(CURDIR)/xxx.mk))3 V# m8 l! R' U- I
在展开第一语句中有或没有都会展开CURDIR/xxx.mk" G7 A" d4 C; X7 M' b$ y' \
而wildcard中有就展开没有就返回为空。
' ]) }/ {. q7 `" a. y" 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-1-12 00:44 , Processed in 0.040522 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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