|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
0 e4 O/ U: P+ ^# vmake menuconfig 是执行makefile里面的menuconfig目标.
% y" p! D( p8 D- P+ C7 d# m6 M; ?3 R, N如果后面ARCH =ARM CROSS_COMPILE=arm-linux-的话表明: 编译出来的目标是针对ARM体系结构的。因为是针对ARM体系结构,所以需要使用交叉编译器。使用CROSS_COMPILE=xxx来指定交叉编译器。
% s6 Q) B! ~( C- c1 wCROSS_COMPILE=arm-linux- 意思是制定交叉编译器为arm-linux-XXX。 如:makefile里面会指定CC为arm-linux-gcc。/ W* R" n) ~8 L7 v( q
; @: n% C; V5 t, L9 p* V% u- _7 J; I; ?! C3 u
2 |4 }7 N4 S d" [2 W
为了使make命令执行并行处理,-j 选项可以用来指定作业数。4 u; C) ]3 A% j" O# |2 U l( P- x
* J) f/ G2 P$ C
$ make -j4
+ d0 A4 U+ i8 I+ O- j1 N* Q$ D) K3 m) ^; e. R5 c, s4 d; Q
作业数是在编译的时候指定主机的CPU个数,所以在脚本中写成一个常量很糟糕。(特别是把编译脚本给其他人的时候。)并行处理的作业数和编译的效率直接相关,所以需要设置合适的作业数量。
2 [9 n' ^$ ]6 p6 W& ]& k' v
0 r( h9 o8 |! Z6 F' Q) A8 Y& t2 {5 p昨天的文章中在编译peRF时,make的任务数能自动设置成CPU的数量。调查了一下它是怎么做的。
1 O* `8 A; Q" F9 x" }% c& }
# N/ B( s% d2 U7 R5 Ylinux/tools/perf/Makefile
; O. E+ d% G- E. v2 {( k' L* ^
9 ]# \) r( h" u/ o! [( l#4 L5 I* Q, k6 ~
# Do a parallel build with multiple jobs, based on the number of CPUs online0 U: s+ z% Q" a$ S' A8 B3 |
# in this system: 'make -j8' on a 8-CPU system, etc.+ D6 f5 f5 j. l9 a2 Q; |
#$ v( P% E) g2 Q
# (To override it, run 'make JOBS=1' and similar.)
4 O; P* t9 d$ Z J& s* X& j#+ m4 W( |( v& R# r# E4 w
ifeq ($(JOBS),)6 C+ I1 w& s# X# f" M$ m
JOBS := $(shell grep -c ^processor /proc/cpuinfo 2>/dev/null)' |$ f7 L$ x# r7 _6 C5 e( g
ifeq ($(JOBS),)4 M3 T0 @# P- K4 N( g, G& B
JOBS := 1& q- d4 K/ w) F5 F6 O) } t7 v5 k
endif
1 d/ T. l' b6 C q0 q; H/ M6 zendif6 O1 s1 c; s! @0 A
这种计算了/proc/cpuinfo以processor开头的行的数量。3 |4 I/ R7 Y# f1 {2 i8 b, g5 _
* p6 J1 I: }. }! R1 q; g/ p这里不使用wc命令来计算匹配的行数,而是用grep -c来获取。
+ o1 |' z4 o' q$ v' D4 V
* A3 v" [5 ~6 n8 T2 R5 ^+ A这里JOBS是CPU的个数,用这个变量在子进程中使用make命令。1 o y6 Q% i1 i1 _6 K
0 d+ _' S( C! ]$(MAKE) -f Makefile.perf --no-print-directory -j$(JOBS) O=$(FULL_O) $(SET_DEBUG) $@
/ S' _2 {" }& z5 p, u: g) g8 H
6 L9 w" X# C0 D1 e
0 W5 P h8 o3 b' c: q, n" Y
% v2 x$ t; U& H) Q* s: N; A& z2 ]3 q( A6 o/ U8 M9 u" g! n
6 X7 _3 v8 J8 ?. C关于make时,通过-j参数指定多线程数目- d7 {2 k- n4 N: N6 W+ T' \ b
2 V6 W$ M+ Y1 r# Y8 d. F
之前在折腾crosstool-ng:
2 C% m/ Y9 K: O9 m1 J
. B3 g L( s3 E6 J9 W' S【记录】crosstool为xscale编译(ct-ng build)过程
) I4 }+ p% V# U/ T0 K
2 H5 u: I4 V" T6 O时,就偶尔看到别人用5 p+ N( `( F4 d
- h: z9 H( {1 bct-ng build.4) Q7 y7 N8 f( N8 q: T7 G5 h
# `' I, n, ]# p( E* j) d8 ]
意思是多线程去编译- z, P+ n2 G+ @! I
% s. M6 g2 o9 t7 y" T
估计底层就是调用的makefile的支持多线程的这个功能。2 |. Y! u: c) g$ f1 |
- k) k3 N# `6 H: B4 N
后来又在别处看到类似的写法了:
6 n0 [; _+ t. {1 l% |
, K0 r) L. d3 u0 b8 b$ F+ {% w VIntroduction to Cross Compilation
, U4 n* q: ~+ U' ^) k
. O6 ?3 s1 T9 V) d$ ~/ W中的:( P7 T7 u; d$ |
; x% V2 A- O% Y
1 make
% _3 t( u1 P `" i u6 Q' U' r0 k' j- ARCH=arm
- CROSS_COMPILE=arm-linux-gnueabi- uImage -j4: `2 P6 @" ?" @: h
- t# Q/ b J( \
0 C$ |- D! C; ]" B$ v) I此时,才想到,去查查make的参数:
5 Q3 \/ J2 G% z1 K9 k4 Z
7 V; f2 \! O! D D3 d" }- ~(此处是在cygwin中)8 P, k/ D' }4 B* h
' y" M2 p' P( {# i* ^" r6 [
, y& a- h% A7 h( ~& f& KAdministrator@PC-20130611GART
9 I, {; l7 d# [" } m1 O0 Z7 E/cygdrive/e/Dev_Root
: W( T6 ]" B3 l3 n* q" H$& f: v6 _: C! g! l
make% e {( K5 h& b5 @: [1 A* T
( S t% ~' X9 H6 u5 c% n2 T--help
9 |4 r" a. ]& T! l6 l. l w1 ]Usage:( L9 j4 @3 c8 d7 N) a- ]9 j" p
make
h- g- o, |/ `" H6 Q B6 p, s) R3 L1 u
[options]
! g8 v( |2 l1 ]3 n2 Q[target] ...
/ L2 f( a, x1 x4 i- zOptions:
' j( |4 Y1 U, _7 A: P0 o 0 C7 a1 ?: R8 c9 J
-b,8 a% J& p, r' P+ M0 T! O2 l' r! M7 T
-m Ignored3 g% ]2 j: O) W- I. \% z5 _7 z# b) B
for
( z$ R) F) z; P# q( f- T) S6 L % T W q. i" n4 ^8 t9 c
compatibility.6 Q* i# {0 Z, i$ P
: B& ^7 O& _8 [- |: k/ h X+ N4 F
-B,# o0 y% C/ I" K' f2 G- }- h
--always-0 u. i; n; _6 Q' r$ ]" ]' V
make0 W/ m3 K U0 p, t# S: s; P
$ ?" S; q5 G0 `$ n% }- d
Unconditionally
- u: z9 o4 h" M3 V6 {: M6 e. _2 Xmake
. K3 @5 i& Y/ v9 Z) |9 \1 [
- U& `( o4 B8 ]1 w6 @3 @1 A2 Mall
A( z6 P- }3 Stargets.
' |% ]6 w. F, g* l6 F ( `! c6 D; u/ v! V s1 C j
-C
! r& Y) Z& r Y- @9 `- F% }; PDIRECTORY, --directory=DIRECTORY
) {7 R/ a3 T9 Y" L
; N5 I6 k& A$ z" s/ DChange$ T+ S5 {8 ^1 f5 P8 C( i* `
to DIRECTORY before doing anything.( Y( e; R9 N- i
0 Z7 B3 n/ C. S
-d $ d1 ]3 z& V1 ]& n3 j, \ {
Print lots of debugging information.
& x4 m; ~6 p a& n1 M4 t9 Y; Y+ J$ U
+ c: a- r* ]% a" Z' u--debug[=FLAGS] / |# X G+ [9 h* d
Print various types of debugging information.' l" `' f! I( }( ~# V8 }) j) x
( E* Z! Q4 P+ D9 N
-e,4 F& i) a9 r8 t4 d
--environment-overrides [/ i, x& O6 v* }
4 @$ { W# W" m& H/ {* L: \ W. u. ?" [Environment
2 D9 m' _: L* X* B1 C+ T* }variables override makefiles.
+ L# E9 l4 ]2 m
1 N5 i$ T3 X, L2 e; Y ]5 X# D) |9 f--
7 A+ j/ y7 e: R$ z$ C4 Z neval+ r4 E2 ^7 r/ C6 ]. V
=STRING # D' Q# w+ S2 a( D" ]
Evaluate STRING as a makefile statement.
' U8 z$ V. l- C! o1 `" e5 }+ Z : Q. j& |& o* A3 i: p$ d; g @7 ~; w
-f2 b6 m9 E. x$ ~( Q, v8 k, C* k4 S
FILE, --& B( Q# Y9 S3 O, X$ A9 j6 M
file9 R6 j7 w" q( s+ z& |
=FILE,- k3 ]: A+ b# v
--makefile=FILE% k$ W) I4 R% x7 T( C& f
9 h& U: J% k3 I7 k' kRead
E9 v9 p/ N* i2 w+ W; DFILE as a makefile.9 S7 p* L4 N$ W: c
, D! X* x7 k. F4 Y/ ]( S
-h,3 c1 Q+ @/ s9 \% G
--help Print this message and
3 b, L4 j A: }+ A% X# E5 \exit" L/ |6 M d' r m& r
.
3 c5 X3 X' Q/ ^6 u* S! \# m ' C! [& T" U+ Q
-i,% |9 c E- A4 n( V) ]
--ignore-errors Ignore errors from recipes.
; I2 U* `1 a9 |( J7 A: h
- c/ G8 |) N* {9 {-I# R: Z- l- s4 G) @
DIRECTORY, --include-
, u2 f9 E/ r8 ?7 D* g1 @dir' j' s; m6 ], [8 c* W
=DIRECTORY
8 V8 S* `1 T/ V, ~3 }4 }: L2 T % d' D. ]9 m' ]$ L1 |
Search
6 d. Y. V) K2 b& w, iDIRECTORY" |/ G/ e+ {$ Z, l* [; j
for
! K+ @ }- s' k t
~0 {4 K1 v2 z) Xincluded
" n" ?4 H/ ]7 S1 N/ Vmakefiles.
/ f* I& c' W8 |, A& n) k8 w 9 I3 ~6 f/ o( m$ \+ F9 E4 p# t
-j2 |0 H$ ^; b9 @0 A1 [! D
[N], --jobs[=N] Allow N jobs at once; infinite jobs with no arg.
; D+ ]* U' \" ~0 O
/ {' P( @6 n& O5 X4 z! j8 P/ C& F \! Q-k,, {* g! o6 k1 W+ Y+ B; y7 c
--keep-going Keep going when some targets can't be made.- D$ m3 z. V7 n3 P& o
7 P* ?2 c" ^, w-l
( U7 A0 F! V; F8 L) ] E[N], --load-average[=N], --max-load[=N]
' R. `" s; z% Q3 {6 U% v $ L& f Y* S( m+ J# C
Don't
. Y# d" ~% @% T" Ystart multiple jobs unless load is below N.* y! m% }+ _5 V
5 @9 B( T% L6 e-L,' j9 N( D" h* w* ?
--check-
8 W. D8 q; z4 l1 _8 D4 |) Msymlink
" d! E" i! }# p- c-2 `3 S: D1 `8 j
times2 a' U1 I& f0 k' J/ j2 X
0 q) o/ H1 t4 ?5 ^$ t2 hUse
/ p4 L* ^0 _) H4 S$ Fthe latest mtime between symlinks and target.
r# E! `! I* r& ^. _
s$ r0 L* F* J# E+ W0 h-n,( l! H3 b; N! L9 _$ q
--just-print, --dry-run, --recon' P0 w- x! H" |+ O* W9 I
5 d" U2 s" N! {! C4 m- n1 F
Don't& S$ n8 a B* S T
actually run any recipe; just print them.# d: F) j& T- w; ~ g
' d& P* {6 M+ v
-o
# E; @0 P$ k4 E9 o" f% R2 {8 S% vFILE, --old-
- d) G/ b2 a/ {: {file
5 D0 e3 Y7 E! ~( @; [+ V3 Z=FILE,* k! S" q3 T7 v( D* I; z
--assume-old=FILE
; u: @& u- P; c9 K$ D$ k
( o/ N& M+ a" ~, F2 V" n6 dConsider
7 P5 x- N% ^+ O6 I. M) \FILE to be very old and don't remake it.+ ]+ m. e* O! i9 l: T* Z! P
9 W2 m1 g0 u0 V$ r7 o4 @-p,
0 y% |: Q! A# ~: w; [--print-data-base Print* s8 Q, o; E& d( {. F( Z2 t: a3 a
make+ @5 K3 L5 s7 A: A3 U7 s/ b; c6 a
's
4 Z8 `! ~8 v) p. w Qinternal database. |( o$ h6 L- Z8 h* e& m: ]
2 G+ N3 w0 i: R) J0 z; J. F: U
-q,9 c2 k" L7 _# r
--question Run no recipe;
) B' j; k3 ?$ F0 oexit0 ^0 t3 b) n+ c. Y
2 x5 K2 _' ?" X8 \0 P' l" w% K
status3 P3 o2 F4 O+ g6 y
says0 |1 o1 s, c+ {
if
) W% o8 e( `, o8 S4 y% m ) F# x' W) l; r! x# V5 [% L
up
/ k1 I5 s! P/ x: d" u2 Z3 A' jto/ B4 `, |1 e6 p) _0 Q
date
3 ?/ F9 M# V: E% Z" Y.
q/ ^! b2 k: a/ r1 w7 T
& u: [' m3 k5 y" Y) y7 K2 @-r,
, u5 W2 u' C; H9 ~7 n7 H9 K7 Y9 n--no-
; Q% M" ^. i5 D* P* G0 vbuiltin
: y- U5 k; Y, Z* c-rules $ A$ z4 T5 G5 v# R0 e& z7 X2 ^
Disable the built-
- [9 n$ L3 `' v1 {* G, [+ ]in
. U, [! Y4 ~$ l
. `* G+ R- ~& limplicit, o6 x) V) A. ]
rules.
' |! A- a7 E0 P
& f0 u4 q" c) U* b m. M-R,
' ]# C, Z" L+ z S0 i--no-
: ?* `1 i6 ^* q7 x4 q4 ]builtin6 y% Z! O4 m& P* v7 E, r
-variables ! y0 Q- v1 X: x* t2 H5 H! j6 w
Disable the built-: t" @, i: z3 I: w
in
. n6 @+ n$ B" a0 ^3 j! z 2 P- ^1 Q) _1 l' `1 J
variable
9 \- j- [6 W& O/ ]% T2 Ysettings./ K8 X! y% s- Y) ?, x' L
0 }* p, q* L, K$ Q
-s,
( C! ^, m" T, R9 n- W--silent, --quiet Don't. ?$ h7 c( h+ L* e. N
echo
; \+ L4 b9 f# Z2 s3 V & V* i* f+ D' k) e7 w* e( f6 T
recipes.
5 M8 z4 y: x: s2 E; z0 {
0 v( r4 H; c2 b: ?) K0 P3 R+ U x-S,
z, |3 A$ \1 x& f--no-keep-going, --stop) D- s+ r. \% A" ?3 h4 z: y: F+ x' }" A Z
/ V' Y7 S& }' c( Y! V5 u
Turns
! m. o, b( |* ^* V8 e* i0 i4 {off -k.4 j8 Q4 D/ ^# U0 {' C- b
# q2 [( g# _& | f }-t,
) A b/ k) @% G& j' I--) B% k m/ {/ f6 B3 X1 O
touch5 n0 h% \$ U' _5 e. `3 l- D
& _" |: Y0 S6 j: p, B2 CTouch
0 e- `) B: I9 ?& _targets instead of remaking them.2 q7 J# s8 A% |9 P- u* f
1 t( Q2 A) U5 L ~& S3 J9 t
--trace
, m+ J d; z2 O2 O& b1 XPrint tracing information.
1 j. G( o' ~& }) s5 A
% E& `/ |& ]) _! ~$ b8 s-1 ~( ]/ Q8 }9 {2 ^
v
" S* k) }% I: p* T! M,4 y: T" [$ i) O- V# q2 S
--version Print the version number of
) c5 r, t x6 X I! cmake2 l5 e, S" \# F* w
. u- L6 S2 ^/ d
and
6 M: |. ?" _0 B$ q3 v+ D. H- iexit
& r1 m( E" l& o0 E- G8 ]9 m.. E9 Z( H/ l9 m, Q9 c% b0 T( l
7 v) x* {0 t: \8 ?+ B
-w,) G7 ]0 U- H* G' S+ T
--print-directory Print the current directory.' a) i- P, b4 t3 X
7 E1 e s, s# T& {; P( Q, x
--no-print-directory
2 T, t l8 s$ D9 |0 C" ZTurn off -w, even) i5 u( r, }& h! ]0 V+ B
if
( d( W4 i4 D& ]. [4 G; Z' C, s 0 r! L: n8 Y0 f7 b0 E: o: c
it
( y& M/ H' \9 Y' _* t! _% hwas turned on implicitly.
' X0 ], T! F( C ) N. G1 q5 r% M- b0 Z) {/ k# }
-W1 A# g1 k0 M( M9 F
FILE, --what-
& W! A6 l9 [7 D" x2 |4 dif A$ s' F, q8 q4 L
=FILE,; F( I+ ~7 N; a5 A+ C
--new-# i$ q" |7 K% p9 q9 }
file. T5 X% W: j8 Z) g
=FILE,
2 G4 F( c; E+ t# y( M--assume-new=FILE5 r; W5 @( a# C# v
1 o- D" R) h2 u9 |Consider
( @- J# v d- s7 g: E4 ^8 M; B4 IFILE to be infinitely new.
( }4 g/ \' X$ w ; L% h- |) z+ ~1 V. Y3 m5 ?7 `
--warn-undefined-variables
; w" \ v1 J7 e+ AWarn when an undefined variable is referenced.
$ ?% J/ {8 q2 |# w1 G/ X+ O
" a* T, d1 [) N h- wThis
4 T+ A) C1 j. [program built
' k. n5 P0 j0 v& c7 _; Dfor/ a: ^: l: _2 s- G2 M. t
+ t' {9 p% ^2 B. c# A
i686-pc-cygwin" Z: C7 t7 [: q7 w, U
Report
; d/ i, h- b# L/ v) abugs to <bug-
7 D6 k3 ? j, y* m% k/ K/ p3 ?& ]5 zmake6 `1 K. U% ]- Y) u5 _& `9 Z) w8 N
@gnu.org>
" I8 s _! J* t4 k % c& N4 C0 d( F9 J. T
Administrator@PC-20130611GART, ]# U7 |% m) ]+ ?1 o" @
/cygdrive/e/Dev_Root1 V8 k4 M, w& ~
$/ t l3 f7 k5 T* l8 j% q
% L9 h7 E% K; L6 f; @+ h+ _
- X5 G/ G: j6 b/ T- K& e: n) m1 b7 F" q9 K& d
' H. D a: @% ?- Q) y8 Z
- o4 p$ N& I8 |+ v# f
果然对应的-j==–jobs,指的是多线程的意思:
3 H- m' C0 X- F T( t% E6 C+ v
N! x2 Y! B4 d2 x7 w-j. @7 z/ Z3 ~7 c3 ~- p
[N], –jobs[=N] Allow N jobs at once; infinite jobs with no arg.
$ @( C$ X: Y( f* m/ J' R
& O' p0 ]8 Z1 `+ b3 o, T8 V: r% ]$ i1 V0 \6 i1 \- f9 ?) Y
) l3 H% u- M6 `; K
用法即:
; C( d- ^) r' ?. o+ Y2 \- F
) C" W8 c Q [/ Q1 make; g7 ?9 [( a6 R
- –j
- 4
2 D3 n, t! i& {/ z' k1 F 9 q4 R/ [$ J. n7 S% B. g4 _ J# [
+ \+ [" Y4 Q, V& a& b5 v5 Y8 m
或4 c& U- ~$ h G, y- [* q! A5 K6 }
, u4 N/ d! p: a1 v
1 make5 A. o4 n" F: R6 y- p! ]$ o) w
- –jobs=42 E% v& [! A3 U6 h5 U* b- N% I
% h9 j5 L8 C6 A( o) _ g, ?9 A6 [, S* y, m
make加上-s,表示silent,不输出详细log信息
0 [: Z5 a. `' v! m1 U7 h
z9 L- h6 I+ `8 q) i之前折腾:& \3 ?0 o+ e9 q3 v% t/ K
( r$ O- H) G3 ~
【记录】尝试用QEMU模拟ARM开发板去加载并运行Uboot,kernel,rootfs
8 U8 O) Y; Y, Y( @7 m" k
4 I. e( H3 y& A参考的:
7 I) A1 L1 b! t( D
?' G+ S: L) K; {Virtual Development Board" v: O) b) j4 g o/ r5 |; K
- R2 `1 t$ A- I0 ^; X Q3 l: @
中就用到:
6 X0 c. O' C* v+ s* P! W+ u5 `- r7 w4 T: J# \% o
- sudo
- make
- n/ y# S' b) [9 [ , k/ Y% D0 ~: h# d
install
m: t7 |! `- l+ f0 V 8 d9 E, w8 v0 K
-s O* S) \. [" y% j
make+ U- y# w0 k3 P6 ^& Q# J
' i( @0 O0 O1 B% e2 W9 u% ]ARCH=arm: c0 e7 L. e; E. ^
CROSS_COMPILE=arm-none-linux-gnueabi- versatile_defconfig -s' y! @" }4 g8 y- o8 F* U
make* t0 a' \( C$ B$ V2 b
5 \( ~% V9 k9 WARCH=arm
, k2 B) T( P) \0 ~( X% u. z4 V9 GCROSS_COMPILE=arm-none-linux-gnueabi- uImage -s
% ]+ }/ l( U- S6 B8 T8 M% m$ g1 q: w. }5 @
7 E q+ @- i3 `4 Y, ?: N s2 s+ j# [0 {
" l1 d& T5 p7 b/ W" e; u! d- k- t8 g
其中的-s参数,之前就猜测是silent的意思。
3 B$ I& k) e3 U) |, T, T- _6 T% d; k* m$ m3 |4 _- B
根本上面的–help输出的信息,果然是:
& ~+ x8 k0 x9 z, S
6 ~1 T( i3 Y$ E: Z" j* ~-s,
9 @/ R- R( U; w% C, G –silent, –quiet Don’t echo recipes.
, k& {9 p: S- [5 D2 b
" d% f$ ^6 m! Q4 P0 w" j, D( k, _. E T5 W& ~
; P' f& S8 a+ X
-f指定makefile文件& B" i/ M+ p7 a' }
5 O }% q* t5 H$ n
之前就知道的,可以通过-f指定特定的makefile文件的。
- X# m$ ^1 g! f* g: `% O: S% b4 t, y5 a
背景是:
/ a* |( Z. V+ D0 u3 Q$ v1 k) f( B$ D2 p6 e! \. U1 m
当执行make时,默认会去(当前文件夹下)找名为Makefile的文件
[0 D: X; d% E& U. O: R
* g# U" j4 g$ B2 d" m0 G如果此处你需要去运行特定文件名的makefile文件,比如my.mk% l& z9 a' J3 v+ }9 Q( {# @6 K
$ ^7 b- W* p! Z9 J; u4 z
那么就可以通过-f去指定:6 k/ I$ ^- g5 q, g
# r$ o; Z1 N8 o; h3 V
1 make$ s* d8 z; M$ c l. E: q: O9 E
- –f
- my.mk0 z3 S2 i/ A+ W( h7 ]
2 b5 e2 K5 E3 f7 o7 p( r4 x6 J5 i
即可。5 e6 _1 Q3 l% X( K
# v" B8 W p: ]( k2 t7 k& W
! a3 Q3 T- U J: T: c+ q0 M( E* J1 F1 U- g) V
make help可以用来查看当前支持哪些目标
8 @2 L( k, O, k! c& i/ `& i e+ i! C8 \1 Z6 S' {7 z
一般来说,多数的makefile文件,除了最常见的make all,make clean等最常见的目标之外,往往都会有自己不同的目标供执行,即:5 y) Q" }& }" \+ e3 z/ f2 e
* h C4 @7 p. r
make xxx
z t0 A q1 S! P3 x2 y% V8 i* m$ ?
make yyy
/ h5 t; ^( d( |: M! d, r/ l+ T8 `5 U( E i0 [0 X& u# u# I6 E
等等。1 G8 y! B0 n* X1 N, R8 E/ n
- D1 H) w% m' y, K3 R" Y' r- @而想要去查看,有哪些xxx和yyy供你使用,可以通过make help去查看。
6 ]; f K% \3 A; q% f0 }, R3 h. j- @. z
举例:
) F+ l/ G' T# s, N
: t% Z& S' Y5 z+ |" t# o最近折腾的:) S/ i; g1 y( S t1 k/ ^( I6 G+ f. b
& V* w+ I" Y9 k& g0 m8 Q, g
【记录】Ubuntu下为QEMU的arm平台交叉编译BusyBox
& M9 _1 [) c2 m$ d8 ?) P5 Z* `8 ] O
中的make help的输出,就是:
8 A2 n3 u: h, T8 b
" c$ S% c2 T( \# b6 w4 ]crifan@ubuntu:busybox-1.16.0$
2 R1 H5 G* J: o! |$ ~. nmake
# f7 X7 Q) y7 X+ L5 j0 P4 J / L2 _/ l$ U) c$ v1 Y
help$ D1 N9 r" Q- }; W% w
Cleaning:2 W+ k& Z% ~' G2 N2 d2 Q6 U4 V
0 A: _2 `; Z J( m7 w' X
clean 3 x6 U) l9 M- ^2 H _
- delete temporary files created by build4 f- O% l( o6 q- m' r
5 r5 E2 Q$ Y2 W( [4 ldistclean
( u. b* r( L5 l4 L& e: A; N- delete all non- R [0 A) l) m3 H0 j
source
5 f2 _% K/ R2 ^7 i " n2 M2 g! D$ @+ U0 l
files0 g, h$ e! D* |" e8 E! c* I
(including .config)2 Z& H& M: C. ?" `0 }4 M
. Q5 \( U. ]' E3 e. s7 t
doc-clean
, F- e' h6 w7 Y! t3 F# y- delete all generated documentation' h% _9 G$ y* T6 y" ^
7 I. D6 ~: ]0 P
: d5 c8 a f0 H: N3 |* mBuild:
+ C) n u+ P E0 G& W
. P$ s7 d! O( x8 S; I, `5 y6 u+ Sall , |6 [( J8 X# g8 L6 [
- Executable and documentation
Q! P! ?$ v$ O7 @! H0 T6 G. M # F. s. V2 X! R; m
busybox
+ e5 X6 w' t! W# I( \8 }- the swiss-army executable
5 p# ]4 m+ m* J( h$ J6 ~4 } & \6 {( o$ L5 C* F6 Y: Z
doc 2 ]+ I8 Q4 ^2 s/ q3 x; R+ r" A
- docs
: r+ s+ y4 q5 w3 {3 d/BusyBox+ C7 M9 f% [. ` o* ?
.{txt,html,1}
; N) ~ m& N, ] ?" O4 M4 d( { 1 M/ J; m8 d% W. s1 @7 g8 L! }
html
; _/ a; B4 O! U" Q- create html-based cross-reference
# W7 H* W$ L$ M z 2 T3 v, B5 G5 d% D) K- c8 [; _
5 r3 B; ^) s8 W1 ^! o, m6 k8 b; w
Configuration:+ I! P9 c0 X4 q) x
3 Y2 `0 `4 `" ?9 `8 mallnoconfig : T `6 ?/ i, `( A
- disable all symbols
" I/ M0 a# ~/ s; e7 c% ?in
4 C" Y& n, \' v; o$ r
$ Z/ W1 `% o) O5 V.config
6 f% S/ x$ A" Q; T/ L* O7 H6 s
8 x0 T6 w7 ]+ Y: oallyesconfig - T! B4 h5 Q7 A% J, L% H8 A
-2 v" j8 s$ e7 v5 g! N$ j; O9 ]
enable
3 ]. W1 w. k4 `8 _; C# Y 1 i$ _5 O& @9 Q2 ~% w
all
: s- c) h1 r! t& g' ksymbols% T8 P* f: \" p; Q9 j9 d' E
in
* F9 k) ?7 m7 S! N ; B& L5 m0 ?3 ?/ P' }5 U! v: P9 d
.config
( w' I; r l9 L5 Q5 E# r(see defconfig)" o' z) Q# M, v0 ?% m
- ` F- y5 ~# y0 Cconfig W1 Q( h0 R/ |5 Z* q! J, I' ~
- text based configurator (of last resort)
$ {! R6 k7 J3 Y. ~" B* o' K
9 ?% H7 g3 f4 V; W7 `defconfig $ g. C) i5 b5 t5 f
-# M8 y" w/ P; L7 s7 I
set
' U4 y) d# j1 ^6 u, R
7 \( F% a: J& g5 \- }$ B9 ~4 e.config4 h# v/ j" D9 U4 o; Z
to largest generic configuration
, X+ p( F5 x3 g- e# U! D, V $ H3 s5 S6 _' h/ R$ B
menuconfig
$ F8 i; m- P: E- interactive curses-based configurator P+ ]% p/ q1 F9 F
) s) V: K$ k2 K8 ?! W n
oldconfig 0 E+ [% @5 R' e8 [$ Z: \/ A' o8 }
- resolve any unresolved symbols
% @- Q. @9 U* f% O$ d8 bin
: q0 ]$ L: k$ j- S$ u7 p: P8 x7 ~3 g
+ n1 e# s6 _- i( u; k.config% h; a0 T/ k/ o; [6 M* z
# N- s' Z2 F3 Y: Z+ `2 a- c! \
hosttools 8 H4 u* ]6 u0 X/ |9 `/ T' M* g
- build. M% \9 A; D8 b g
sed) X+ a5 G, v/ ]' K) S5 d: {4 r
) r* y- T! F/ l- S
for+ E6 p O" _6 z7 f1 Q2 g8 g/ `
: N0 K( R1 E/ S9 T: ^
the
# n! w, B$ ~; c t& O7 j5 H% bhost.
( [4 D- d) n. L2 l 9 P, s8 @$ S0 D* v- K8 K4 y0 C
You
( ], N( r! f8 A" Z2 h( ~* jcan use these commands
3 P, o1 C) J+ n$ \9 vif" I# u/ T+ q# E' r. d
5 N2 y9 n& b- h9 G4 o9 n" B9 G% V' a' @the
% D ^3 R( ~( o3 \: [commands on the host
' y8 H# M2 }- [9 A% z/ ^1 d
5 f7 C6 f. t: h; Z$ {9 ^) dis. W: T" T% w0 p4 \ L& \
unusable. Afterwards use it like:0 a' I- ~, u; K+ G, T+ r
8 ^" z7 o, H' N4 N
make3 t M4 y% G/ s% c
9 Y- {; b( ]% D) ASED=5 t& Y/ [: E2 f1 m
"/home/crifan/develop/embedded/qemu/rootfs/busybox/busybox-1.16.0/sed") W P, x5 ?$ n* B
4 z M. t/ A9 z" c1 W" V! h
/ J* f0 p7 c% @* ?
Installation:$ W5 C& N8 V$ T2 A t
* g/ x! }6 Y( L0 T4 j
install
4 d- ~' u4 D6 ? 2 h0 e, W) }* L$ U* f
-
- `+ `+ Z V+ e. Y9 dinstall
8 p7 Z/ t& Z- M0 N( x
+ m) L/ P5 Q( x/ D, k: m: \. Mbusybox7 Y W1 K, c4 y& T# R% C+ _. n) v: f
into CONFIG_PREFIX
& [* D) _: w8 ~9 s4 r. n2 O
2 l- W N) T* U& q* Tuninstall
& S: i# f% K5 m : r0 }; E, c$ d
0 \7 n, m# E, u
Development:6 h6 B6 w. g3 S" [/ j( e7 O+ j
& t4 z# Q3 C, m
baseline 8 y/ I$ L% U( \) D8 a
- create busybox_old" D5 \- C* ?9 C4 c8 G% L& Y
for9 L% \4 n* H: w/ Y, A" Z
d1 D! Y7 e d; A1 Kbloatcheck.0 U$ y! }- n/ x$ I- U
& v6 s! n" b, M: o$ S* Z& j4 i
bloatcheck
% P K9 ?, S5 E( D: Y: X9 [- show size difference between old and new versions
9 F+ B$ L @* K. j; O" v" c ; o! R" I4 S. `" Y+ a! r( M+ f: c) F- I
check
7 t: X3 a5 k# o' k" w- run the
) G9 J9 y& X, h5 w; _9 [7 E0 x/ o% _! htest4 e# H+ v) l# M6 R& M! E4 ]0 i
' k% X x; Y/ O4 isuite
( R( Z3 I9 e( e# Wfor0 {6 X9 p3 f) y) ]! t" `
4 ~ L$ Z9 L H. C0 |0 I- B, Aall. M3 `/ _* G% k" p& b6 b
applets' ^$ S3 O! y) r5 e ~. z; u
) h; e1 C3 _# w' Vcheckhelp
: K2 M: m. s+ ^( E( T- check
9 O9 O# X0 |7 y- Ofor
% P; a2 S2 A" I: C5 C, b- {0 ? ( v. x( U* m2 P& Q( |
missing
# z2 M6 K7 T: x. C9 Hhelp-entries* }& V: y# L2 {, v( s* s
in9 m. ]! H" `# g( |6 ?
0 q* e- o% @5 @ C6 o0 L t
Config.
5 C, I) |3 k" S% M2 K. kin; l5 E, W0 f: n' W' k$ q7 p' `
+ u/ N8 O+ ~1 n5 y9 u! R: p; c
randconfig
, _. R) D" J0 v" h' ~- q- generate a random configuration
) J" C# w+ [1 \3 A1 W! _ 8 o, U8 s1 A8 x) c
release
1 _- ~6 H2 ^& G9 W9 `3 G9 D- create a distribution tarball9 z! S& R* f5 {
! c! M4 ~# Q8 p$ [3 _( c/ D* k
sizes + S4 W5 V) s# F* s. ~# B
- show size of all enabled busybox symbols% Q; m& ~$ }' j6 [- b& C O" J) v
0 M4 e# m" d n: Y; }objsizes & R; D& \. G: o8 d2 j* M' P
- show size of each .o object built
" g8 i9 {+ O- X
6 o4 _; @- Y6 e& \% o) ybigdata
3 I" B; k4 |% D: `% \- show data objects, biggest first8 _5 u0 |. g6 z, {' v( D
* L4 f" I3 q* o1 D# o1 K) z2 y" Q" V' p& s6 Fstksizes 5 J" V) i$ _/ ?6 z' {$ _# ?/ E
- show stack9 F4 r4 Q& o+ }
users
7 k0 ?- S# S+ M) x* A,( @$ `5 [9 X* T
biggest first
; L0 [7 @, w+ g, c$ i1 f9 v4 u* x" r' a4 G9 O1 W
( Z% E% q; c$ D
1 |, M( K+ ^2 g9 F1 `/ h
如此,就知道了:8 Q n! a- ~- ~; g; G
) T4 U2 O, i$ h+ A4 G% Z' R
Q/ j& F! V! Y q6 K; R0 g当前的busybox的makefile中,支持如此多的目标,而想要查看当前busybox的各种stack信息,就可以去试试那个stksizes了:
! W8 _' N, R2 B1 ?) k: `
) W. H! T* x6 C1 C+ scrifan@ubuntu:busybox-1.16.0$0 j% X2 S5 F, q
make
0 G7 R) h+ T8 b& H* Q% W 9 J5 D; J" T& a" C7 N
ARCH=arm
& j( M) Q, {0 z' k0 fCROSS_COMPILE=arm-xscale-linux-gnueabi- stksizes) q6 ~2 t. ?1 }0 T# N( M& W
arm-xscale-linux-gnueabi-objdump
- M* y! b" s+ S' l6 e-d busybox_unstripped |
+ c. G. }. d0 l- Y) }/home/crifan/develop/embedded/qemu/rootfs/busybox/busybox-1/ y- K+ V: u- i+ x4 l, A! z
.16.0" k2 {: b& \, V
/scripts/checkstack* x' Y0 B K$ h$ Q& V
.pl/ W( G+ ?9 v2 s# u
arm |
$ E7 N( L5 U$ e, s6 }$ Q- Duniq6 _! b0 T7 a( d' `* E$ ~' d w+ T
buffered_vfprintf4 z0 h' S1 o7 J$ D- Y( I
[busybox_unstripped]: 8384
4 ?( H' X( J) g8 y2 J8 M1 ~phys_pages_info4 q5 v: \. y3 D# X8 I+ e
[busybox_unstripped]: 81920 D9 d6 b; t2 q* t2 U5 Q
__get_nprocs% E$ U5 w, ^" ? x9 k
[busybox_unstripped]: 8192* o+ g/ P4 T9 _6 Y4 ]" q
__res_vinit T' u) ]) t! n1 s7 R1 y
[busybox_unstripped]: 8192: M- T2 D! j. R6 \
_IO_wfile_seekoff1 \3 X6 V7 I! W% y
[busybox_unstripped]: 4224
1 z; n& T/ O% L; j& G6 J) Q__unix_grantpt
9 B6 a4 _4 ~7 K% I: N[busybox_unstripped]: 42243 I+ @ O; N; L2 h
_IO_vfwprintf
+ c* l5 [# }% u8 W) z9 q1 e! i[busybox_unstripped]: 42246 y4 X8 J& Y7 k7 i
grantpt
# |* I. {+ Q+ X0 ~9 S: J# {, A4 r[busybox_unstripped]: 4160, m7 P$ \3 L+ i/ Y- @, w7 }; c; b
bb_full_fd_action7 q) j6 a. r! [# R3 P/ S* @
[busybox_unstripped]: 4096. Z# y9 ~ e/ _" `
find_list_entry24 y2 U+ Q" a* |
[busybox_unstripped]: 4096
9 }: }8 Y+ V9 X/ ]readlink_main; `/ e* W) a4 ^
[busybox_unstripped]: 4096
, x2 o1 V. T" H1 Dpid_is_exec3 h! R5 I7 }' g: s& L4 ?1 ]! S- R
[busybox_unstripped]: 4096- A# D* f5 S8 s) Y
execle
4 E2 I1 W0 G2 }" ]' |1 t[busybox_unstripped]: 4096/ r& ~3 X3 `) y- d y( r! A2 v) X
execl
' ~% r, _7 ~% \/ |3 @5 j3 Y' P* D[busybox_unstripped]: 4096
8 c4 V7 i2 q; F$ \8 B& \! O7 Kexeclp
}, N) q% T% s6 s[busybox_unstripped]: 4096( y* P" F" I2 H p2 d
_dl_get_origin
5 J8 E9 p1 o# U" ]+ }[busybox_unstripped]: 4096
4 A* D- ]( ` [# q; ?2 \ipaddr_list_or_flush$ M+ y S8 ?0 t+ [1 k% u
[busybox_unstripped]: 3664
8 l3 }5 c" G7 t5 T2 O) ?- eiproute_list_or_flush
( I0 k) I( g# o4 n& s9 u3 P. K[busybox_unstripped]: 3648
8 Y4 V5 V4 l! v3 ~7 N__c32
5 V ?& [6 K) }1 [3 V[busybox_unstripped]: 36001 ?. [. Y! a% K9 K# y9 ]/ [' f
buffered_vfprintf
4 H8 P7 T6 }) l7 l7 Q+ b) |& [[busybox_unstripped]: 3302. }7 L& s; o3 j( Q2 q
__mpatan
7 M2 t- N+ z5 @5 f) T# y) @( P[busybox_unstripped]: 2976+ d% h8 H1 |% v# u" V
fallbackSort
" u- {) `# x+ F[busybox_unstripped]: 2928
6 E% S3 s5 ?- i* M+ ]# @: oatan2Mp.constprop.0) ]8 z4 \6 C8 m1 O& T0 _% V
[busybox_unstripped]: 2304/ B: E. D! Q/ ?) W4 ^
__mpsqrt
; _$ l' n" ?8 Y6 O0 W[busybox_unstripped]: 2304( |1 r/ J% L4 D% y2 p/ a3 F! j
__slowpow
+ \/ _5 m+ A- g4 h% F[busybox_unstripped]: 2304
5 R! N8 G- H# r2 \4 v% `cal_main
8 z0 L% h9 [0 v9 u[busybox_unstripped]: 22881 N1 I. Y2 y; P
internal_fnmatch, e& j8 ~6 p% U% |5 S6 N& G3 t
[busybox_unstripped]: 2144! [/ T( s6 `% M& o9 o
doCommands
6 N# `9 q5 I$ l& _% D& q[busybox_unstripped]: 2112
3 _" y! }9 v5 T5 A4 Z__slowexp1 R3 X4 f- W$ S- L
[busybox_unstripped]: 1984
7 }! S6 [! l( x1 D" B__mpexp
; a6 H8 m* z; Q$ t% h[busybox_unstripped]: 1984* v0 }: ]5 W( x0 X, [- y6 B
normalized2 J }; ^5 i' w" v6 j) H
[busybox_unstripped]: 1968
9 ~4 O1 i) g& L% |0 \% [get_next_block
! ^7 i6 \* T4 q! ]4 _[busybox_unstripped]: 1968
- W* _! x5 S1 w8 q6 k" G) videntify_from_stdin9 n2 E; I9 L3 I% b; m* S# Q, K
[busybox_unstripped]: 1792
4 t- e1 b: \* ~__ieee754_log* @) I0 c( ~+ ^% Q/ R/ f( _
[busybox_unstripped]: 16486 E+ g5 `& Z! d t, `
huft_build
+ n9 z. x) R8 R+ c, ?[busybox_unstripped]: 14889 T* \: ?: C* Z, L" U
iproute_modify7 V0 Q" h4 @/ Q" i; N7 M
[busybox_unstripped]: 1376
6 H8 e* U/ r5 V3 r& Gsvc_getreq_common
# V3 u* B6 g+ m6 L4 L$ u[busybox_unstripped]: 1328
) S7 O; Z- n. N; \6 g8 E! [__mpatan2% H& r8 @( s9 T1 @% m4 K, {
[busybox_unstripped]: 1312 v4 s$ s9 [- D2 l+ g5 P
inflate_block
5 q; I& M( `* Z& C( ? C9 g[busybox_unstripped]: 1296" b5 r4 o8 k. ], @" k
_IO_vfprintf8 Z7 \6 F; @" @: f m- m
[busybox_unstripped]: 12967 m6 a5 M! C6 |4 ]% P8 Q* a/ V
__libc_message
, ? `% l Z7 x( r# n. k( O9 c[busybox_unstripped]: 1280! C0 g& K5 S: i, h6 ~7 W
getlogin_r% ?+ }3 \7 J3 O, c g1 B" s
[busybox_unstripped]: 12807 C q6 h6 Y. W
mainQSort3.constprop.21 q% g# N9 x: W. }# U) M5 |9 ^
[busybox_unstripped]: 1264" s( R* }2 i& r5 Z
__gettextparse
* t: p3 K5 R* o' }; f9 y9 h! c3 g+ x[busybox_unstripped]: 1248 U6 G5 z2 Z& Y J
iproute_get
, P7 {5 n$ j7 g% b. w[busybox_unstripped]: 1184
9 \( z9 F: V9 {' Vrx_main
& |: I O: M9 @9 y. K4 P[busybox_unstripped]: 11525 a2 W6 f6 m1 g0 q
ether_wake_main
" L6 ^: c" J( G5 H- {[busybox_unstripped]: 1152- \0 M4 N; D& f0 i) o" R- k: l8 |
procps_scan
8 a4 h& \3 ~% |( J3 X[busybox_unstripped]: 1152+ C/ V, Z% F9 J$ f, h# n
unwind_phase2_forced
0 b0 H- w" U O$ x' I- l[busybox_unstripped]: 1152
* M# k, P5 E" ybuild_trtable) G* A6 b+ ~* e% F
[busybox_unstripped]: 1126
% u6 c. ?/ Y: ]: w) c1 Pwget_main4 I( i2 Y# w; U9 W- f3 s+ F
[busybox_unstripped]: 1120; g* F& A( Y( s, Y! ~6 B
iprule_modify0 d3 [% C1 K3 P: W8 }
[busybox_unstripped]: 1120
- y% b. {( c; W& x, W1 |2 ]getopt327 m7 R, c# M8 W0 t
[busybox_unstripped]: 1104& t2 N5 n5 c, \
_svcauth_des" x l! N+ K3 t* e/ r
[busybox_unstripped]: 1088
, r! q9 e' j, d/ m: _- S2 t3 Otwo_way_long_needle6 h# v6 y$ P u
[busybox_unstripped]: 1056! Z( M F0 n- W: ~
ether_hostton0 E: Y* G; u [" ?7 M* `: Z
[busybox_unstripped]: 1056
1 l& e3 n- r7 J+ Y0 v1 U! Xcheck_existence_through_netlink/ o; r# N% S* [' @) @- N
[busybox_unstripped]: 1040
" p; F" {9 e5 Y; r4 rtwo_way_long_needle& W" u3 B: {9 e1 v, ~, D6 [
[busybox_unstripped]: 1040% J- O% W( D% { u
clnt_sperror
* I6 k/ c$ P6 v$ L[busybox_unstripped]: 10402 k5 A2 I- Y' i
clnt_spcreateerror" D8 _' ]% A' h$ k! M) r) W
[busybox_unstripped]: 1040
, ?- l6 C' B+ b" __dl_signal_error7 W/ k9 k. ]; x8 e1 }! W
[busybox_unstripped]: 10400 y) y; n/ {& P
internal_fnwmatch
% y6 q7 K- @/ Y/ {( |[busybox_unstripped]: 1030
3 y$ b( X' B/ Bbad_zone
+ O9 q: S0 F* v% X8 {0 k7 _7 [% Y[busybox_unstripped]: 1024
4 i, w, m m0 ] `get_dirsize4 Z' y. F6 U8 o5 C1 }% {" a1 w: Z8 L
[busybox_unstripped]: 10241 E8 ~, {& r7 d0 Z
map_block2- o' X& X% @( E! x3 z" U
[busybox_unstripped]: 1024
9 ^+ c3 ^& `: A, z! Lmap_block
1 `. a5 H9 T; t% g# Y$ l/ }: ~[busybox_unstripped]: 1024
+ P) [4 X: b* W' i9 waddLines: M+ e/ i4 |7 C/ O! S- c
[busybox_unstripped]: 1024
W" \2 p! q( r+ I: }8 F; J% kgetNum- m- a9 a. Z. a" {. b: k
[busybox_unstripped]: 1024- L5 {: o5 U _3 r
perror_internal
/ n- T( u: ^) M: L6 Z9 }1 D( F3 Q[busybox_unstripped]: 10245 R5 i/ ^% e- G( h: I3 P* ?
__getmntent_r- q1 X& ^; [) d4 p! y7 O, n* ?
[busybox_unstripped]: 1024" t9 @5 t" y7 R4 v0 x% E
__mpsin0 z1 Z/ L) J, U8 J; t( q8 e
[busybox_unstripped]: 996
9 q6 Z1 I' r' H( C' Y& y0 n__mpcos
6 g: l5 \+ l' D8 m" ^1 b6 p; p[busybox_unstripped]: 996
, x3 d3 H) c2 Y R4 q6 X6 M__mpsin1
4 R- K ~/ q( ~& S( Y[busybox_unstripped]: 992
/ I! a$ c s4 m+ B7 X6 W" ^__mpcos1% \' Y9 f! w0 J' _+ R9 z
[busybox_unstripped]: 992/ S2 P1 p R' |1 U. t+ [9 f
__sin32
% D; @0 M! O) r( }: _' Z# G: I7 d[busybox_unstripped]: 9888 b7 W+ y. F- s% t6 A, q) e" e7 z
__cos32
' Y& A6 i: T1 m# j a[busybox_unstripped]: 988
8 R& c. @+ D3 P+ u& t4 Q__mpranred% _7 \* l* z+ W" t U: W; W
[busybox_unstripped]: 988
/ V1 {- k. f3 U3 a: M4 N0 S1 D: b__mplog
$ F; F- v5 C- j1 s; d: T# H9 I[busybox_unstripped]: 984# @- l$ c' }% j- D) g
udhcpc_main2 b q$ C$ s4 M% N+ U9 c* R$ j$ P! G' R
[busybox_unstripped]: 884
- K. B: X( E0 b+ sdhcprelay_main" x" A' m6 Z, h2 B! Y
[busybox_unstripped]: 836 x( @" K: E) A8 H; L( j$ H
udhcpd_main; n7 q' [8 @" a E0 y
[busybox_unstripped]: 824# r' w# s8 X' }% ` J, q
sha512_process_block1289 Q3 i" p, p- I/ q" v( j& l. w
[busybox_unstripped]: 812
5 x2 H% y6 m+ x9 {& d' |! pglob_in_dir; R. r% {+ M& H C$ T! d
[busybox_unstripped]: 804
: I# Q* k$ h; w9 ]% A& Hinit_exec$ Q& b6 e2 O) I: N$ ~ b- N/ M# A3 B
[busybox_unstripped]: 788
& }- l! l# W/ U: }- {; Pwrite_wtmp
: O2 o) A& X4 X[busybox_unstripped]: 780; K1 o" z# H% v, s
nfsmount4 W$ i2 q# V8 C' K
[busybox_unstripped]: 732
% h) Q) R! p# sdo_tunnels_list7 _: \2 n1 e, m( B5 Y7 d6 x) P
[busybox_unstripped]: 724
5 D( e0 ?0 f% T) R- Jprint_tunnel# w" |3 X1 Q7 b: _) \+ A0 |7 t
[busybox_unstripped]: 712 ~/ t, s. U$ g, L0 H5 w. P
pututline_file
$ C" f' _. A* r [[busybox_unstripped]: 708
( E( ~0 `" J# o* J, K% gif_readlist_proc- m, i! B) U/ D: u4 F: m
[busybox_unstripped]: 696
- A0 r4 a0 J( Y' x- Tudhcp_send_raw_packet' l8 [' g' H8 m
[busybox_unstripped]: 6923 Z" ^* j+ O$ W: J, R9 m1 l7 r
arp_show @# t+ d; |! I$ o
[busybox_unstripped]: 684
( Z3 j% }& o( [__inv
2 v1 Z ^$ _! f+ g- K2 b[busybox_unstripped]: 664 s- M! w7 J2 Q H- o
__gnu_Unwind_Backtrace, _5 t! A' l6 y& a9 z# c5 j
[busybox_unstripped]: 664; S8 L/ Z% a* Y) A. i
udhcp_recv_raw_packet% [2 r8 C8 _* y6 ]
[busybox_unstripped]: 660$ Q2 Z. J6 |( D
print_login_issue, b1 p, }/ V7 u4 z
[busybox_unstripped]: 656; S5 A) m9 L5 Y# M9 i& h. D. [
send_ACK! \: U2 x" e8 G: d9 h
[busybox_unstripped]: 644- a* r/ U, b$ r; F" M/ ?, K
send_release1 ]; N' z) J& J0 C: D" z
[busybox_unstripped]: 644( ]& m+ E$ [. m E) D- z! g
send_offer1 `8 h; p8 E D) I
[busybox_unstripped]: 640
# N0 b( z/ p" f+ `1 f; V2 Y* vsend_renew
|. a" m( n. C[busybox_unstripped]: 640" E- a4 g# W9 d1 s
send_NAK
/ Q4 C9 K% b! T; ?[busybox_unstripped]: 636
2 V# C3 {: U* m+ {send_discover
) f- c/ w V' J8 f6 \[busybox_unstripped]: 6365 Q! M2 T* k G4 ?, W
send_inform
, @7 v/ {1 [, J- W( P' ~2 Y[busybox_unstripped]: 632
' S V: } N! ^6 j; Y. F- }8 qsend_decline2 U% `8 d Q; A$ f
[busybox_unstripped]: 632
3 Q) p2 h" K$ g. U# Gsend_select% M' E# O2 M* \) R/ J1 o
[busybox_unstripped]: 632 E; d7 A( h# N/ q) d
ash_main/ O( p* r5 Y' d* C; W
[busybox_unstripped]: 632! r8 Q7 K5 z) \& d
dnsd_main
3 {# |, f# @7 @1 p, N: j[busybox_unstripped]: 604* P! F8 ?. H. }
_dl_start_profile" c( y0 n* b1 y, m- e* } m
[busybox_unstripped]: 6042 a. t; [* N5 ]8 Y v: _7 d
sha_crypt
2 d2 o4 T4 ?$ m1 B0 b[busybox_unstripped]: 596. j! S, S: t7 g
__gnu_Unwind_RaiseException
/ ^% X% U: T, \; v& V! b[busybox_unstripped]: 580
" S2 B6 [( q& q- U h. W; p_dl_map_object8 o: X2 o* F& I5 D9 l! x; [
[busybox_unstripped]: 580. ^( E* Q% F1 c9 z+ K6 P
inetd_main
' q, U+ W* ^/ L! o8 ^[busybox_unstripped]: 576
$ V; M6 {+ a0 q2 kreadtoken19 j+ v8 j5 \. P; w2 G) P" k
[busybox_unstripped]: 5723 x( T. Y3 Q: A: \' q& ]- `! {
_dl_debug_vdprintf
3 Q+ Z. L- U, r% m/ n! ^[busybox_unstripped]: 556
2 m3 y: E/ l' v2 t( j9 a* iprocess_dev6 b d% u. {0 \6 M
[busybox_unstripped]: 544
, t7 E$ X$ M+ c7 W% Rget_header_tar
3 @( m* U9 v4 U& K) G! H- ?! K& o[busybox_unstripped]: 540
. y; r9 i1 {! L6 auname_main
% k* \. S% q4 ?0 l[busybox_unstripped]: 5405 B6 o( c$ [* v3 G% y6 {
last_main* _4 P8 o, i& w1 w: W n
[busybox_unstripped]: 532
9 d8 f: T& x1 p8 R8 [7 {glob_in_dir2 C9 n; \+ S7 M/ p% B
[busybox_unstripped]: 532/ J) @' G4 T: e9 K7 l/ F0 M
dir_act4 H" C' F% z. u8 O5 t- |
[busybox_unstripped]: 5245 s) `6 b& \; t) J+ A. o
retrieve_file_data
7 {$ o g; p7 s5 r[busybox_unstripped]: 5244 d% i$ d) s2 B$ D3 \0 o0 v
log_option
4 a! A: u1 q2 a9 S[busybox_unstripped]: 5249 F" P- N% D# V+ S, F3 T+ j' U
gaih_inet
1 M7 q! o- q" a/ g[busybox_unstripped]: 520% Z# y9 |8 O6 B: c
readprofile_main
5 o$ [$ ?5 P& Y* w) l3 o5 a U[busybox_unstripped]: 516
5 g, V- L! x8 M0 h4 p; YwriteTarHeader
4 ]9 b1 B. B; o4 g7 m$ v- }8 J( g[busybox_unstripped]: 516
7 X5 L, m2 x; x* j( @, r_IO_vfscanf
- D! V, I# Q/ J q3 I% t7 n1 B[busybox_unstripped]: 516
3 \) m+ m. p/ n& e- T0 n9 b! ahandle_net_output u f% Z) T% _" J
[busybox_unstripped]: 5124 [9 _ A: s* P* S5 _
writeLongname4 L3 x& Z: ?% W9 A5 s, A* F1 w" J
[busybox_unstripped]: 5128 D0 r+ P R. P3 b$ ?" c
getnameinfo
\1 q- l& P; a+ H9 N G[busybox_unstripped]: 484: s. m/ w) W1 B4 N( I8 ]
print_addrinfo
& r0 f g1 E/ A' {7 Z& {/ {[busybox_unstripped]: 480 o/ d3 h& k3 `' c' L
_nl_load_locale_from_archive
9 v. }2 Z/ d8 g; p: d( P: H[busybox_unstripped]: 460+ h {/ g3 q1 A6 d0 K
read_alias_file2 x9 l1 W& n. x& q( y1 O
[busybox_unstripped]: 4605 B7 W Y# j9 N. r2 G( Y |
_dl_discover_osversion
) J9 i0 E/ J0 i! \% }1 C[busybox_unstripped]: 460
5 {9 i+ [- b5 X t5 K/ z+ aauthunix_create
4 z7 L: d! \& s0 Y$ X[busybox_unstripped]: 456
! x% n, ~( ]. _, }* ~login_main
8 ^( H" o" d3 Z) B! x! @# Z[busybox_unstripped]: 4525 M+ R8 B1 v" L5 U. i, Z
print_route
2 o- e( K" F% b/ }$ t; t+ r+ c[busybox_unstripped]: 444
5 i( K: u' L* T) o6 H/ R, H0 F' Fevalfun5 K3 k0 ?9 H3 ?& X1 w+ p
[busybox_unstripped]: 440! N% N, [1 r& Q3 ]. y
_dl_catch_error; x7 e$ A/ N6 n# |. \' O/ |
[busybox_unstripped]: 440
+ E0 j7 `% F6 R* q. [brctl_main
4 r: S9 q* v2 \+ p4 g; s" x# Q7 ~[busybox_unstripped]: 420
2 Q6 r4 Q( A/ L; v; }3 C5 ]# wevalbltin.isra.1
n+ s) Z/ r V! ^[busybox_unstripped]: 420, F" w% _) j) W8 }+ f5 O
evaltree
( I9 b1 J3 l( `8 t& p5 [/ \4 D) `[busybox_unstripped]: 420- J' w# @$ `: A" z6 b" m' H: }
setvarsafe
H; i* `1 D+ B" R: g[busybox_unstripped]: 416
: Y1 W" o0 z- W% l% e" `, n2 Jredirectsafe
# x/ ` K% k6 s; t1 e[busybox_unstripped]: 4168 ~" | |4 W" ?
crond_main0 F* ^+ F5 S- b+ ]5 m* |! I% }) x
[busybox_unstripped]: 4126 ]% O; b& w, Q- W
modprobe_main" h8 y2 |* i# f5 ]: X
[busybox_unstripped]: 412
0 Y- |3 A( f- p$ j# r. _ipaddr_modify
, A) L4 E1 L, d2 e) t[busybox_unstripped]: 412
7 M) @1 M/ m% H7 O0 Lscan_proc_net" G$ l6 n; P4 f9 M5 E. Z* _- R
[busybox_unstripped]: 412
; U! b# q. b. R; D0 l0 y. x_Unwind_VRS_Pop( d+ G- ^: v; u) {) W3 b
[busybox_unstripped]: 412
+ u' l' M1 {. q8 f__sleep
' s1 H1 q# f5 B8 P! v8 R[busybox_unstripped]: 408
; c' o) k/ ?# o- o' A7 i3 K3 t____strtod_l_internal2 V$ W6 ?" P$ [1 c* K: w! B
[busybox_unstripped]: 404* |3 q9 u; ~) ] q) }7 P0 n0 ^% M
exitshell4 t: Y: {' r- n9 ~0 E6 W
[busybox_unstripped]: 404+ Z7 M/ m& c7 d* A {- N
bb_ask
. E/ C1 B' ^" u' |) d[busybox_unstripped]: 404
. P r; i" P2 N. N* g) i/ E! L Aget_linux_version_code; }$ W; ^0 ~" P/ b. a
[busybox_unstripped]: 3961 g, R4 @: a: w l/ H3 N, v
safe_gethostname8 R4 ^' c/ x, f2 o) M
[busybox_unstripped]: 396
2 Z/ B0 n0 N9 ~& I2 S9 L# F) ~safe_getdomainname
8 Y: S! U, s8 \; R[busybox_unstripped]: 396
; U0 ~* x3 a4 Qgetdomainname/ _" O! f- P0 {9 `
[busybox_unstripped]: 396
2 ^9 O9 W% ?" C& D' z7 wrunsv_main
; h5 Q2 S! ~6 I2 g) t" [[busybox_unstripped]: 3928 E5 z, l' g- U9 [( r
__gethostname
$ s" h9 v- p& p4 n) v* ?5 E/ P U; n[busybox_unstripped]: 392* I- P1 y$ O4 J
update_utmp
' i5 K; R* S' L x[busybox_unstripped]: 384' ^# m* J) c/ h
print_rule
- C1 | i+ x3 h1 h# ?[busybox_unstripped]: 384
9 ~% j# X* {0 u0 S9 Y5 X; ]: nparse_config_file
+ b+ Q% M% k* N/ z4 D% o[busybox_unstripped]: 3804 ?7 t# K0 v- F: S3 M) ~; H
reread_config_file
: R! z8 v! a, j4 X0 _# ~7 w# }. e4 z[busybox_unstripped]: 380
: ]2 x0 X) _; {- I1 T2 Z/ rset_loop
) [" }) G% B; ], f& v4 U1 J[busybox_unstripped]: 380
6 e5 q: A# C( I" q! E9 [1 K& Qfbset_main
3 e1 A' S$ a* }' \' f; w) a! J[busybox_unstripped]: 372+ N% Y, Y. w" R' k3 |
find_block_device' f# `* N9 ?) M% Y: |
[busybox_unstripped]: 372
' ]' p7 i8 |! ^4 Tarping_main- S; V* z) Q4 B/ Z6 q
[busybox_unstripped]: 364
/ c. O7 Y a" g8 Q% T5 S% g, i9 U1 c_IO_vdprintf
6 }2 K9 V% Y) E6 a9 m! V[busybox_unstripped]: 364
4 z9 o, j9 m3 @6 {0 Ymd5_crypt5 s, p" U; O5 I; y9 o/ R- ^3 B- k
[busybox_unstripped]: 3560 p/ h# Q7 X) r Q, P
passwd_main
1 ^/ Y Q( e; v' }, `9 O[busybox_unstripped]: 348- c' k6 V! W" U
__mbsrtowcs_l
+ s$ M7 C9 d5 ^( p9 e[busybox_unstripped]: 348
% b8 m3 O0 I! p9 L* Ylist_devs_in_proc_partititons
' a% a$ F- D+ n9 ?2 i[busybox_unstripped]: 344+ j; ?8 O5 i) k$ d- w$ m( Z$ `
sha1_process_block64
; ]* A$ |$ {5 Q u' c* g/ J[busybox_unstripped]: 340
1 M7 s, F4 u+ z+ i2 P% R__glob64
% x* W& w2 y' ^$ S( T6 k1 r[busybox_unstripped]: 340
2 E0 B8 }! z; L6 K2 q+ ldisplay_process_list+ s2 i) v/ G5 b! z" z
[busybox_unstripped]: 332
2 @7 m8 j1 _2 ?/ Q2 B__wcsrtombs
" m1 J4 a2 K' W! R8 e[busybox_unstripped]: 3329 e& ]# N E( y1 H. G! k
INET6_displayroutes
1 }' K5 A# K- L! d* t# i9 U: r[busybox_unstripped]: 328
/ Y9 K G$ y; n$ c& n__dvd# {! B: L& L7 E+ j2 p; w
[busybox_unstripped]: 328
+ E: y% \2 c/ I. r7 Q* UmainSort/ e; [; |2 x/ ~2 o; C. V
[busybox_unstripped]: 324% r' k! t! D, c
__mbsnrtowcs
2 s0 N2 q! v3 }% x8 I! j3 W[busybox_unstripped]: 324+ Q0 L% N c* J3 N' v* W3 m) J) u
__ttyname_r$ g, y3 q) D8 P" G. v
[busybox_unstripped]: 324
3 Q: R" {* M' c8 u7 S- t0 nglob; |9 h- g3 f- e5 T
[busybox_unstripped]: 324
, Z& v$ d( j; ?! Q4 Vsulogin_main! b! X/ e g/ f- s9 i$ ^
[busybox_unstripped]: 3160 A3 k3 V% L9 x" q
makedevs_main9 W8 [/ s$ j& o
[busybox_unstripped]: 316
3 k' b2 w& Z& M3 D! y9 _) Vre_compile_fastmap_iter.isra.40, N( j! |, w% {! ^
[busybox_unstripped]: 3168 q1 U: d' B5 w$ v
do_lzo_decompress' i1 j* c% f1 x
[busybox_unstripped]: 312; v8 y3 k/ ~/ ~9 y
do_system/ ]3 v4 |' m0 {0 I( j
[busybox_unstripped]: 312% h& }1 f F) ~7 o( s5 [6 R/ h
do_lzo_compress$ ]) m( q0 \2 N% P6 ]+ `$ t
[busybox_unstripped]: 308% A4 D( x5 o8 F7 T, ]4 a/ x& M6 u
updwtmp_file
! Y! j6 M. D$ N[busybox_unstripped]: 308- P2 c7 T( i6 [8 ~- P0 ?; k5 n9 y
getutline_r_file& c! h% |6 I4 |( P5 D! V
[busybox_unstripped]: 3083 F6 O$ H: M9 o f. C. @
correct_password
" W; P: B% _" |, K7 K[busybox_unstripped]: 304
2 U" f0 T' f: T0 Y' V$ t z__libc_start_main
0 ~) B1 [! x( @4 Q" x$ L[busybox_unstripped]: 3040 ~- Z- C5 f/ y. {: a$ x
telnetd_main w% d* Z5 v- H6 o( C' Q
[busybox_unstripped]: 300. \/ q( O1 P5 Z7 g/ q% x* z
read_line_input
' B4 i: m% G; f[busybox_unstripped]: 300
) V1 C, i+ l8 l5 n8 J; N3 L/ Ure_search_internal5 Y3 r" a" N6 \# ?2 |
[busybox_unstripped]: 300" v* @; ?1 m9 B6 j" Z
internal_getut_r
+ u$ S& `- p4 B' i( Q+ G[busybox_unstripped]: 300! H8 b8 v" l+ U. i5 c/ c: k5 _
crifan@ubuntu:busybox-1.16.0$
/ d7 K9 B% T4 o% y: P $ b# g7 q' E1 V5 B0 S4 r$ ?5 z
& f9 V9 u3 B: r; d) k" ~0 i# |/ ^6 `! x2 @+ {; F. W& W! H
! F# k. {! Q- m2 B( ?
/ b( W4 \3 G6 {) a6 y7 n2 h
3 R+ L& S/ M, F3 W$ s l4 Q% E+ f% n" I2 @3 `
0 q3 M0 Y% l" s: R+ V( V! `( x3 l( k; B
+ ~0 e R3 C( Q4 g9 W$ j2 k
6 b, ^# b2 K6 _ r' S |
|