if you build it - it will (cross) compile

14
If You Build It - It Will (Cross) Compile ืžืืช( ืขื ื‘ืจBlondy314 ืจื•ืชื) ื”ืงื“ืžื” ื“ืžื™ื™ื ื• ืืช ื”ืชืจื—ื™ืฉ ื”ื‘ื: ื›ืชื‘ืชื™ ืงื•ื“ ืฉืืจืฆื” ืœื”ืจื™ืฅ ืขืœ ืžื›ื•ื ื” ืžืกื•ื™ืžืช, ื ื ื™ื— ืขืœ ื˜ืœืคื•ืŸAndroid ืฉื›ื™ื“ื•ืข ืžืจื™ืฅLinux ืขืœ ืžืขื‘ื“ARM , ื‘ืขื•ื“ ืกื‘ื™ื‘ืช ื”ืคื™ืชื•ื— ืฉืœื™ ื”ื™ืUbuntu ืฉืจืฅ ืขืœ ืžืขื‘ื“Intel x86 . ืื ืืงืžืคืœ ืืช ื”ืงื•ื“ ืขืœ ื”ืžื›ื•ื ื” ืฉืœื™ ื‘ืืžืฆืขื•ืช ื”ืงื•ืžืคื™ื™ืœืจ ืฉื™ืฉ ืขืœื™ื” ื™ื™ื•ื•ืฆืจ ืœื™ ื‘ื™ื ืืจื™ ืืฉืจ ื™ื•ื›ืœ ืœืจื•ืฅ ืจืง ืขืœ ืžืขื‘ื“ ื™Intel . ื‘ืžื™ื“ื” ื•ืืขืชื™ืง ืื•ืชื• ืœื˜ืœืคื•ืŸ ืฉืœื™ ื•ืืจื™ืฅ ืื•ืชื• ืืงื‘ืœ ืฉื’ื™ืื”: ./main sh: ./main: not executable: 32-bit ELF file ืœืžื” ื–ื” ืงื•ืจื”?ื‘ืžืงืจื” ืฉืœื ื• ืฉืคืช( " ื›ืืฉืจ ืžืงืžืคืœื™ื ืงื•ื“ ืขื ืงื•ืžืคื™ื™ืœืจ ืžืกื•ื™ื ื”ื•ื ืžืชืจื’ื ืืช ื”ืฉืคื” "ื”ืขื™ืœื™ืชC ืœืฉืคืช) ืžื›ื•ื ื” ื•ืžื™ื™ืฆืจ ืงื•ื‘ืฅ ื‘ื™ื ืืจื™ ื”ืžื•ืจื›ื‘ ืžืงื•ื“ ืืกืžื‘ืœื™ ืขืop-code - ื™ื ืฉื”ืžืขื‘ื“ ืžื›ื™ืจ. ื”ืžืขื‘ื“ื™ื ื”ืฉื•ื ื™ื ืชื•ืžื›ื™ื ื‘ืคืงื•ื“ื•ืช ื•ื‘ืžืืคื™ื™ื ื™ื ืฉื•ื ื™ื ื•ืœื›ืŸ ืœื ื™ื›ื•ืœื™ื ืœื”ืจื™ืฅ ืงื•ื“ ืฉืงื•ืžืคืœ ืขื‘ื•ืจ ืžืขื‘ื“ ืื—ืจ. ื ื™ืชืŸ ืœื—ืฉื•ื‘ ืขืœ ืขื ื™ื™ืŸ ื–ื” ื›ืกื˜ ื”ื•ืจืื•ืช ืฉืืชื ืžื ืก ื™ื ืœื”ืฉืœื™ืš ืžืžื ื’ื ื•ืŸ ืื—ื“ ืœืžื ื’ื ื•ืŸ ืฉื ื™ ืฉืขื•ื‘ื“ ืื—ืจืช. ืœื“ื•ื’ืžื, ื”ืคืขื•ืœื•ืช ืฉื ื‘ืฆืข ื‘ื”ื’ื” ืฉืœ ืžื˜ื•ืก ืฉื•ื ื•ืช ืžื”ื’ื” ืฉืœ ืจื›ื‘- ื‘ ืžื™ื“ื” ื• ื ืžืฉื•ืš ืืช ื”ื’ื” ื”ืžื˜ื•ืก ื›ืœืคื™ื ื•, ื”ื•ื ื™ืชืจื•ืžื ื›ืœืคื™ ืžืขืœื” ื•ืื™ืœื• ืื ื ืขืฉื” ื–ืืช ื‘ืจื›ื‘- ืœื ื™ืงืจื” ื›ืœื•ื. ืื– ืื™ืš ื‘ื›ืœ ื–ืืช ืื•ื›ืœ ืœืงืžืคืœ ืืช ื”ืงื•ื“ ืขื‘ื•ืจ ืžืขื‘ื“ARM ? ื”ืื ื”ื“ืจืš ื”ื™ื—ื™ื“ื” ื”ื™ื ืœืงืžืคืœ ืื•ืชื• ืขืœ ื”ืžืขื‘ื“ ื”ืกืคืฆื™ืคื™? ื›ืžื•ื‘ืŸ ืฉื”ืชืฉื•ื‘ื” ื”ื™ื ืฉืœื™ืœื™ืช( ืื—ืจืช ื”ืžืืžืจ ื”ื–ื” ื”ื™ื” ื“ื™ ืงืฆืจ).. ื‘ืžืืžืจ ื”ืงืจ ื•ื‘ ื ืขื ื” ื‘ื”ืจื—ื‘ื” ืขืœ ืฉืืœื” ื–ื•, ื•ืืฆื™ื’ ืืช ื”ืคืชืจื•ื ื•ืช ืœืขื ื™ื™ืŸ. ืืชื™ื™ื—ืก ืœืคื™ืชื•ื— ื‘ืกื‘ื™ื‘ืช ืœื™ื ื•ืงืก ืืš ื”ืžื ื’ื ื•ืŸ ืจืœื•ื•ื ื˜ื™ ื’ื ืœืžืขืจื›ื•ืช ื”ืคืขืœื” ืื—ืจื•ืช ื›ื’ื•ืŸWindows ืื•Mac .

Upload: others

Post on 07-Feb-2022

7 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: If You Build It - It Will (Cross) Compile

If You Build It - It Will (Cross) Compile ( ืจื•ืชืBlondy314ืขื ื‘ืจ ) ืžืืช

ื”ืงื“ืžื”

ืฉื›ื™ื“ื•ืข Androidื›ืชื‘ืชื™ ืงื•ื“ ืฉืืจืฆื” ืœื”ืจื™ืฅ ืขืœ ืžื›ื•ื ื” ืžืกื•ื™ืžืช, ื ื ื™ื— ืขืœ ื˜ืœืคื•ืŸ :ื“ืžื™ื™ื ื• ืืช ื”ืชืจื—ื™ืฉ ื”ื‘ื

. ืื ืืงืžืคืœ Intel x86ืฉืจืฅ ืขืœ ืžืขื‘ื“ Ubuntu, ื‘ืขื•ื“ ืกื‘ื™ื‘ืช ื”ืคื™ืชื•ื— ืฉืœื™ ื”ื™ื ARMืขืœ ืžืขื‘ื“ Linuxืžืจื™ืฅ

ื™ืืช ื”ืงื•ื“ ืขืœ ื”ืžื›ื•ื ื” ืฉืœื™ ื‘ืืžืฆืขื•ืช ื”ืงื•ืžืคื™ื™ืœืจ ืฉื™ืฉ ืขืœื™ื” ื™ื™ื•ื•ืฆืจ ืœื™ ื‘ื™ื ืืจื™ ืืฉืจ ื™ื•ื›ืœ ืœืจื•ืฅ ืจืง ืขืœ ืžืขื‘ื“

Intelื‘ืžื™ื“ื” ื•ืืขืชื™ืง ืื•ืชื• ืœื˜ืœืคื•ืŸ ืฉืœื™ ื•ืืจื™ืฅ ืื•ืชื• ืืงื‘ืœ ืฉื’ื™ืื” .:

./main

sh: ./main: not executable: 32-bit ELF file

ืœืžื” ื–ื” ืงื•ืจื”?

( ืœืฉืคืช Cื›ืืฉืจ ืžืงืžืคืœื™ื ืงื•ื“ ืขื ืงื•ืžืคื™ื™ืœืจ ืžืกื•ื™ื ื”ื•ื ืžืชืจื’ื ืืช ื”ืฉืคื” "ื”ืขื™ืœื™ืช" )ื‘ืžืงืจื” ืฉืœื ื• ืฉืคืช

ื™ื ืฉื”ืžืขื‘ื“ ืžื›ื™ืจ. ื”ืžืขื‘ื“ื™ื ื”ืฉื•ื ื™ื -op-codeื•ืžื™ื™ืฆืจ ืงื•ื‘ืฅ ื‘ื™ื ืืจื™ ื”ืžื•ืจื›ื‘ ืžืงื•ื“ ืืกืžื‘ืœื™ ืขื ืžื›ื•ื ื”

ืชื•ืžื›ื™ื ื‘ืคืงื•ื“ื•ืช ื•ื‘ืžืืคื™ื™ื ื™ื ืฉื•ื ื™ื ื•ืœื›ืŸ ืœื ื™ื›ื•ืœื™ื ืœื”ืจื™ืฅ ืงื•ื“ ืฉืงื•ืžืคืœ ืขื‘ื•ืจ ืžืขื‘ื“ ืื—ืจ.

ืฉืขื•ื‘ื“ ืื—ืจืช. ืฉื ื™ืœื”ืฉืœื™ืš ืžืžื ื’ื ื•ืŸ ืื—ื“ ืœืžื ื’ื ื•ืŸ ื™ืืžื ืก ืฉืืชืื›ืกื˜ ื”ื•ืจืื•ืช ืขื ื™ื™ืŸ ื–ื”ื ื™ืชืŸ ืœื—ืฉื•ื‘ ืขืœ

, ื›ืœืคื™ื ื•ื”ืžื˜ื•ืก ื ืžืฉื•ืš ืืช ื”ื’ื” ืžื™ื“ื” ื•ื‘ -ืœื“ื•ื’ืžื, ื”ืคืขื•ืœื•ืช ืฉื ื‘ืฆืข ื‘ื”ื’ื” ืฉืœ ืžื˜ื•ืก ืฉื•ื ื•ืช ืžื”ื’ื” ืฉืœ ืจื›ื‘

ืœื ื™ืงืจื” ื›ืœื•ื. - ื™ืชืจื•ืžื ื›ืœืคื™ ืžืขืœื” ื•ืื™ืœื• ืื ื ืขืฉื” ื–ืืช ื‘ืจื›ื‘ื”ื•ื

? ื”ืื ื”ื“ืจืš ื”ื™ื—ื™ื“ื” ื”ื™ื ืœืงืžืคืœ ืื•ืชื• ืขืœ ARMืื– ืื™ืš ื‘ื›ืœ ื–ืืช ืื•ื›ืœ ืœืงืžืคืœ ืืช ื”ืงื•ื“ ืขื‘ื•ืจ ืžืขื‘ื“

ื”ืžืขื‘ื“ ื”ืกืคืฆื™ืคื™?

..(ืื—ืจืช ื”ืžืืžืจ ื”ื–ื” ื”ื™ื” ื“ื™ ืงืฆืจ)ื›ืžื•ื‘ืŸ ืฉื”ืชืฉื•ื‘ื” ื”ื™ื ืฉืœื™ืœื™ืช

ืœืคื™ืชื•ื— ื‘ืกื‘ื™ื‘ืช ืœื™ื ื•ืงืก ืืชื™ื™ื—ืก ืขื ื” ื‘ื”ืจื—ื‘ื” ืขืœ ืฉืืœื” ื–ื•, ื•ืืฆื™ื’ ืืช ื”ืคืชืจื•ื ื•ืช ืœืขื ื™ื™ืŸ.ื•ื‘ ืื‘ืžืืžืจ ื”ืงืจ

.Macืื• Windowsืืš ื”ืžื ื’ื ื•ืŸ ืจืœื•ื•ื ื˜ื™ ื’ื ืœืžืขืจื›ื•ืช ื”ืคืขืœื” ืื—ืจื•ืช ื›ื’ื•ืŸ

Page 2: If You Build It - It Will (Cross) Compile

If You Build It - It Will (Cross) Compile

www.DigitalWhisper.co.il

2 2018ื™ื ื•ืืจ , 90ื’ืœื™ื•ืŸ

:ืžืกืคืจ ืžื•ืฉื’ื™ ื‘ืกื™ืก ื‘ืชื—ื•ื ืขืืœืคื ื™ ืฉื ืชื—ื™ืœ ืœืฆืœื•ืœ ืœืขื•ืžืง ื”ื ื•ืฉื ื‘ื•ืื• ื ื™ื™ืฉืจ ืงื•

ELF - Executable and Linkable Format ,ืงื•ื‘ืฅ ื‘ื™ื ืืจื™ ื‘ืคื•ืจืžื˜ ืœื™ื ื•ืงืกื™ )ื™ื›ื•ืœ ืœื”ื™ื•ืช ืงื•ื‘ืฅ ื”ืจืฆื” ,

(objืกืคืจื™ื™ื”,

Open Source - ืื•ืกืฃ ืฉืœ ืงื•ื“ ืคื•ืžื‘ื™ ืฉื ื™ืชืŸ ืœื”ื•ืจื“ื” ื—ื™ื ื. ืœื“ื•ื’ืžืLinux ื”ื™ื ื•open source ืฉื ื™ืชืŸ

(Closed Sourceืื™ื ื” )ืžื” ืฉื ืงืจื Windowsืœื”ื•ืจื™ื“, ืœืงืจื•ื ื•ืœืฉื ื•ืช ื›ืจืฆื•ื ื ื• ื•ืื™ืœื• ืžืขืจื›ืช ื”ื”ืคืขืœื”

GNU - ืคืจื•ื™ืงื˜open source ืฉืžื”ื•ื•ื” ืืช ืจื•ื‘ ืกื‘ื™ื‘ืช ื”-user mode ืฉืœ ืœื™ื ื•ืงืก )ืœื™ื ื•ืงืก ืžืชื™ื™ื—ืก

)ื–ื”ื• ื˜ืจื ื“ ื ืคื•ืฅ ื‘ืชื—ื•ื GNU Not Unix -ื”ื™ื ื ืจืืฉื™ ืชื™ื‘ื•ืช ืžื—ื–ื•ืจื™ื•ืช Kernel .)GNU-ื‘ืขื™ืงืจ ืœ

)ื•ืขื•ื“ PHP, CURL, Nagios, XBMCื”ืžื—ืฉื‘ื™ื ืœืขืฉื•ืช ืจืืฉื™ ืชื™ื‘ื•ืช ืžื—ื–ื•ืจื™ื•ืช ื›ื’ื•ืŸ

gcc - GNU Compiler Collection ืงื•ืžืคื™ื™ืœืจ ืฉืœ ,GNU ( ืฉืชื•ืžืš ื‘ืฉืœืœ ืฉืคื•ืช ืชื›ื ื•ืชC ,Objective-C ,

Java ,GO ื•ืžื”ื•ื•ื” ืืช ื”ืงื•ืžืคื™ื™ืœืจ ื”ืกื˜ื ื“ืจื˜ื™ ื‘ืจื•ื‘ ื”ืžื›ื•ื ื•ืช ืฉืžื‘ื•ืกืกื•ืช )ื•ืขื•ื“UNIX

libc - C Standard Library ืขื•ื˜ืคืช ืืช ื”ืจ ืฉื, ืกืคืจื™ื™ื”-syscall- ื™ื ื‘ืžืขืจื›ืช ื•ืžืกืคืงืช ืœืžืฉืชืžืฉ ืกื˜

ื ื•ื—ื•ืช ืœืฉื™ืžื•ืฉื”ืฉืœ ืคื•ื ืงืฆื™ื•ืช

glibc - GNU libc, ื”ืกืคืจื™ื™ื” ื”ื ืคื•ืฆื” ื‘ื™ื•ืชืจ ื‘ืฉื™ืžื•ืฉ ื‘ืœื™ื ื•ืงืก

Makefile - ืžืืคืฉืจ ืœื”ืจื™ืฅ ืืช ื”ืงื•ืžืคื™ื™ืœืจ ื•ื‘ื• ืžืคื•ืจื˜ื•ืช "ื”ื•ืจืื•ืช" ื”ืงื•ื‘ืฅ

ืขื‘ื•ืจื•

ืœืขื ื™ื™ื ื™ื ื•... ื•ื›ืขืช,

Cross Compiling

Cross Compiling ืœื”ืœืŸ(CC ื”ื™ื ื” ืฉื™ื˜ื” ืœืงืžืคืœ ืงื•ื“ ืขืœ ืžื›ื•ื ื” )A ื”(-Host ืืฉืจ ื™ื•ื›ืœ ืœืจื•ืฅ ืขืœ ืžื›ื•ื ื” )B

-ื‘ื™ื ืืจื™ ืฉื™ื•ื›ืœ ืœืจื•ืฅ ืขืœ ื”ืงื•ื‘ืฅ ื‘ืขืฆื ืžืงืžืคืœื™ื ืงื•ืžืคื™ื™ืœืจ ืืฉืจ ื™ื“ืข ืœื™ืฆื•ืจ ืื ื• CC(. ื‘ืืžืฆืขื•ืช Target-)ื”

Target .

:ื™ื›ื•ืœ ืœื”ื™ื•ืช ื‘ืžืกืคืจ ืžืืคื™ื™ื ื™ื Target-ืœื‘ื™ืŸ ื” Host-ื”ืฉื•ื ื™ ื‘ื™ืŸ ื”

ื•ืขื•ื“ Intel ,ARM ,MIPS ,PPC ,SPARC ื™ืฉื ื• ืžื’ื•ื•ืŸ ืจื‘ ืฉืœ ืกื•ื’ื™ ืžืขื‘ื“ื™ื: :ืžืขื‘ื“ .1

ื™ื›ื•ืœ ืœื”ื™ื•ืช ืฉื•ื ื” ื’ื ื‘-Bitness (32 \ 64 )ื‘ื™ื˜

ืœื”ื™ื•ืช ืฉื•ื ื” ื’ื ื‘ื™ื›ื•ืœ-Endianness ( ืืฉืจ ืงื•ื‘ืข ืืช ื”ืกื“ืจ ื‘ื• ื”ื‘ืชื™ื ืžืกื•ื“ืจื™ื ื‘ื–ื™ื›ืจื•ืŸLittle \

Big)

ื‘ืขืœืœื›ืœ ืžืขื‘ื“ ื™ืฉ ื’ื ืชืช ื“ื’ื ืฉื™ื›ื•ืœ ืœื”ื™ื•ืช Instruction Set ืฉื•ื ื”. ืœืžืฉืœ ืขื‘ื•ืจARM ื™ืฉื ื:

Armv9,

Armv7,Cortex ื•ืขื•ื“

Page 3: If You Build It - It Will (Cross) Compile

If You Build It - It Will (Cross) Compile

www.DigitalWhisper.co.il

3 2018ื™ื ื•ืืจ , 90ื’ืœื™ื•ืŸ

ื‘ื• ื™ืฉ ืจืง ืžืขืจื›ืช ื”ืคืขืœื” ืื—ืช )ืื™ืŸ ื”ื‘ื“ืœ ื‘ืงืžืคื•ืœ ื‘ื™ืŸ Windows-ืœืขื•ืžืช ืขื•ืœื ื”: ื”ืคืขืœื” ืžืขืจื›ืช .2

XP ,Win7 ,Win10 ื‘ืขื•ืœื ื” ,ื‘ื™ื˜( 64 \ 32ื•ื›ื•' ืืœื ืจืง-Unix ื™ืฉ ืฉืœืœ ืžืขืจื›ื•ืช ื”ืคืขืœื” ืฉืฉื•ื ื•ืช ื‘ื™ื ื™ื”ืŸ

:ื‘ืงืžืคื•ืœ

Linux

FreeBSD

Darwin ืžืขืจื›ืช ื”ื”ืคืขืœื” ืžื‘ื•ืกืกืช(Unix ืฉืœ ื—ื‘ืจืชApple ื›ื’ื•ืŸMac ื•-iPhone \ iPod)

Solaris ืžืขืจื›ืช ื”ืคืขืœื” ืฉืžืฉืžืฉืช ื‘ื™ืŸ ื”ื™ืชืจ ืจื›ื™ื‘ื™(Oracle)

ื•ืขื•ื“

ืฉืœ ื”ืžืจืช ืงื•ื“ ืžืฉืคื” ืœืฉืคื” ืฉื•ื ื”ืขื ืงื•ื ืกืคื˜ , ื ื™ืชืŸ ืœื”ืชื‘ืœื‘ืœCross Compilingื›ืืฉืจ ืžื“ื‘ืจื™ื ืขืœ

. ืชื”ืœื™ืš ื›ื–ื” ืžืชื‘ืฆืข Cืœืฉืคืช Fortran. ืœืžืฉืœ ื”ืžืจืช ืงื•ื“ ื™ืฉืŸ ืฉื ื›ืชื‘ ื‘ืฉืคืช Source To Sourceืฉื ืงืจื

ืฉืœื ื• ื•ืœื›ืŸ ืœื ื ื™ื›ื ืก ืืœื™ื•. scope-ืืš ื”ื ื•ืฉื ื”ื–ื” ืื™ื ื• ื‘ Transpilerืื• Trans-compiler ืจื›ื™ื‘ ื”ืžื›ื•ื ื”ืข"ื™

ืžื•ืชืื ืœืจื•ืฅ ืขืœ ื˜ืœืคื•ืŸื” ELFืื ื™ ืื•ื›ืœ ืœืงืžืคืœ Ubuntu, ืขืœ ืื•ืชื” ืžื›ื•ื ืช ื”ืงื•ื“ืžืชืื ื ื—ื–ื•ืจ ืœื“ื•ื’ืžื

.Android ื”ืžืจื™ืฅ

? target-ืฉืœ ื” spec-? ืœืžื” ืœื ืœืงืžืคืœ ืขืœ ืžื›ื•ื ื” ืฉืžืชืื™ืžื” ืœCross Compilingืื– ืœืžื” ื‘ืขืฆื ืฆืจื™ืš

:ืžืžืกืคืจ ืกื™ื‘ื•ืชื”ืชืฉื•ื‘ื” ืžื•ืจื›ื‘ืช

ืœื ืชืžื™ื“ ื™ืฉ ืืช ื”ืชืฉืชื™ืช ืœืงืžืคื•ืœ ืขืœ ืžื›ื•ื ืช ื”ื™ืขื“. ืœืžืฉืœ ื‘ืกื‘ื™ื‘ื•ืช -ืชืฉืชื™ืชEmbedded ืฉืื™ื ืŸ

ืŸื—ื–ืงื•ืช ืžืกืคื™ืง ื›ื“ื™ ืœื”ืจื™ืฅ ืขืœื™ื”ืŸ ืงื•ืžืคื™ื™ืœืจ ื›ื“ื•ื’ืžืช ืชื ื•ืจ ืžื˜ื‘ื— ืื• ืžื›ื•ื ืช ื›ื‘ื™ืกื” ืืฉืจ ืžื•ืจืฅ ืขืœื™ื”

ืœื™ื ื•ืงืก

ืœ ืงื•ื“ ืขืœื™ื”ืžื›ื•ื ืช ื”ื™ืขื“ ื™ื›ื•ืœื” ืœื”ื™ื•ืช ืžืื•ื“ ืื™ื˜ื™ืช ื•ืœื›ืŸ ื™ื™ืงื— ื–ืžืŸ ืจื‘ ืœืงืžืค -ืžื”ื™ืจื•ืช ื•ื‘ื™ืฆื•ืขื™ื

ืœื ืชืžื™ื“ ืชื”ื™ื” ื‘ืจืฉื•ืชื›ื ื”ืžื›ื•ื ื” ืฉืืœื™ื” ืžื™ื•ืขื“ ื”ื‘ื™ื ืืจื™ ืฉืœื›ื. ืกื™ื‘ื” ื ื•ืกืคืช ื”ื™ื ื’ื -ื–ืžื™ื ื•ืช

ื›ืœื›ืœื™ืช, ืœืžื” ืœืจื›ื•ืฉ ืจื›ื™ื‘ ืื—ืจ ืฉื™ื›ื•ืœ ืœื”ื™ื•ืช ื™ืงืจ ื›ืฉื ื™ืชืŸ ืœืงืžืคืœ ืขืœ ืžื” ืฉื›ื‘ืจ ื™ืฉ

ืืคืฉืจ ืœื”ืงื™ื ืกื‘ื™ื‘ื” ืื—ืช ื‘ื” ื ื™ืชืŸ ืœืงืžืคืœ ืœืžื’ื•ื•ืŸ ืจื‘ ืฉืœ ืกื‘ื™ื‘ื•ืช ืื—ืจื•ืช ื‘ืืžืฆืขื•ืช -ืจื•ื‘ื•ืกื˜ื™ื•ืช

, make-linux-armv7 :ื™ื-makefileืฉืœ ื”ืžื•ืฆืจ. ื“ืžื™ื™ื ื• ืกื˜ ืฉืœ build-ืฉืžื•ืจืฅ ื‘ื–ืžืŸ ื”ืกืงืจื™ืคื˜ ืื—ื“

make-mips ,make-darwin 'ื•ื›ื•

ืฉื‘ื•ื ื” Cross Compilerืฉื‘ื” ื‘ื•ื ื™ื Canadian Cross Compilingื“ื™ ื™ืฉื ื”( ื”ื™ื ื” ื•ื“ื•ื’ืžื ืžืขื ื™ื™ื ืช )

Compiler ื ื•ืกืฃ ืฉืžื”ื•ื•ื”Cross Compiler ืœืžื›ื•ื ื” ื ื•ืกืคืช. ื›ืœื•ืžืจ, ื‘ืžื›ื•ื ื”A ืคืœื™ื ืงื•ืžืคื™ื™ืœืจ ืืฉืจ ื™ื•ื›ืœ ืžืงืž

. ื‘ื”ืจืฆื” ื‘ืฉื™ื˜ื” ื–ื• ื™ืฉืชืžืฉื• Cืขืœื™ื” ื”ื•ื ื™ืงืžืคืœ ืงื•ืžืคื™ื™ืœืจ ื ื•ืกืฃ ืฉื™ื•ื›ืœ ืœืจื•ืฅ ืขืœ ืžื›ื•ื ื” Bืœืจื•ืฅ ืขืœ ืžื›ื•ื ื”

:ื‘ื“ื’ืœื™ื

--build=[Compiler A Host] --host=[Compiler A Target] --target=[Compiler

Target]

ืืฉืจ ื™ืจื•ืฅ Windowsืขืœ ืœื™ื ื•ืงืก ืขื‘ื•ืจ Cross Compilerื“ื•ื’ืžื ืœืฉื™ืžื•ืฉ ื‘ื˜ื›ื ื™ืงื” ื–ื• ื”ื™ื ืงืžืคื•ืœ ืฉืœ

. ื”ืกืชื‘ื›ืชื? ื’ื ืื ื™...MIPSื•ื™ืงืžืคืœ ื‘ื™ื ืืจื™ื ืขื‘ื•ืจ ืžืขื‘ื“ Windowsืขืœ

.ื—ืฉื‘ื• ืขืœื™ื” ื”ื™ื• ื‘ืงื ื“ื” ืฉืœื•ืฉ ืžืคืœื’ื•ืช ืคื•ืœื™ื˜ื™ื•ืช ืฉื‘ื” ืฉื‘ืชืงื•ืคื”ื”ื˜ื›ื ื™ืงื” ื ืงืจืืช ื›ืš ืžื”ืกื™ื‘ื” ื”ืžื•ื–ืจื”

Page 4: If You Build It - It Will (Cross) Compile

If You Build It - It Will (Cross) Compile

www.DigitalWhisper.co.il

4 2018ื™ื ื•ืืจ , 90ื’ืœื™ื•ืŸ

Binutils

ื‘ื™ื ืืจื™ื™ื ืืฉืจ -Binutils (Binary Utilities )ืื ื—ื ื• ื ืงื‘ืœ, ื‘ื™ืŸ ื”ื™ืชืจ, ืกื˜ ืฉืœ Cross Compiling-ื‘ืžืกื’ืจืช ื”

:ื—ืฉื•ื‘ื™ื Binutilsืžื”ื•ื•ื™ื ื›ืœื™ื ืœื™ืฆื™ืจื” ื•ื ื™ื”ื•ืœ ืฉืœ ื‘ื™ื ืืจื™ื™ื ืฉื ื•ืฆืจื™ื ื‘ืงืžืคื•ืœ. ื“ื•ื’ืžืื•ืช ืœื›ืœื™

as - ื”ืืกืžื‘ืœืจ ืฉืžื”ื•ื•ื” ืืช ื”-backend ืžื•ื›ืจ ื’ื ื›( ืฉืœ ื”ืงื•ืžืคื™ื™ืœืจ-GAS - GNU Assembler)

ld - ื”ืœื™ื ืงืจ ืฉืœื•ืงื— ืื—ื“ ืื• ื™ื•ืชืจ ืงื‘ืฆื™obj ืงื‘ืฆื™ ื”ื‘ื™ื ื™ื™ื ืฉื”ืงื•ื“ ืžืงื•ืžืคืœ ืืœื™ื”ื( ื•ืžืงื‘ืฅ ืื•ืชื ืœื›ื“ื™(

ืื—ืจ( objืื• executable ,libื‘ื™ื ืืจื™ ืื—ื“ )ืฉื™ื›ื•ืœ ืœื”ื™ื•ืช

ar - ื™ื•ืฆืจ ืงื‘ืฆื™archive ืœืžืฉืœ( ื‘ืคืจื˜ ืงื‘ืฆื™ ืกืคืจื™ื•ืช ืกื˜ื˜ื™ื•ืช ,libc.a)

objdump - ืžื“ืคื™ืก ืžื™ื“ืข ืื•ื“ื•ืช ื‘ื™ื ืืจื™ ื ืชื•ืŸ ื•ื™ื›ื•ืœ ืœืฉืžืฉ ื›-disassembler

readelf - ืžืฆื™ื’ ืžื™ื“ืข ืื•ื“ื•ืช ืžื‘ื ื” ื”ื‘ื™ื ืืจื™. ืœืžืฉืœ ืืช ื”-symbol table ืื• ืืช ื”-header-ื™ื ืฉืœ ื”-

ELF

strip - ื›ื’ื•ืŸ ืžื™ื“ืข ืขื‘ื•ืจ ื“ื™ื‘ื•ื’ ื•)ืžื•ืจื™ื“ ืžื™ื“ืข ืœื ื—ื™ื•ื ื™ ืžื”ื‘ื™ื ืืจื™ ืืฉืจ ืžืงื˜ื™ืŸ ืืช ื”ื’ื•ื“ืœ ืฉืœ ื”ื‘ื™ื ืืจื™-

symbol-ืขืœ ื›ืŸ, ื‘ื™ื ืืจื™ ืฉื”ื•ื (ื™ื .stripped ื™ื”ื™ื” ืงืฉื” ื™ื•ืชืจ ืœื“ื‘ื’ ืื• ืœืขืฉื•ืช ืœื• Reverse Engineering

ืืš ื”ื Cross Compiling-ื•ืœื›ืŸ ื’ื ื”ื ื ื“ื‘ืš ืฉืœ ื” Platform Dependentื”ื™ื ื Binutils-ืฉื™ืžื• ืœื‘ ื›ื™ ื›ืœื™ ื”

ื ืฆื˜ืจืš MIPS-ืขืœ ื‘ื™ื ืืจื™ ืฉืงื•ืžืคืœ ืœ objdumpืื™ื ื ื›ื•ืœืœื™ื ืืช ื”ืงื•ืžืคื™ื™ืœืจ ืขืฆืžื•. ื›ืœื•ืžืจ, ืื ื ืจืฆื” ืœื”ืจื™ืฅ

(.ืœื ื™ืขื‘ื•ื“ ื˜ื•ื‘ ืฉื›ื›ืœ ื”ื ืจืื”) host-ืฉืœ ื” objdump-ื•ืœื ื‘ CC-ืฉื ื•ืฆืจ ื‘ objdump-ืœืงื—ืช ืืช ื”

Toolchain

Toolchain ืงื•ืžืคื™ื™ืœืจ, -ื”ื™ื ื• ืื•ืกืฃ ื”ื›ืœื™ื ื”ื ื“ืจืฉื™ื ื‘ืฉื‘ื™ืœ ืงืžืคื•ืœ ืฉืœ ื‘ื™ื ืืจื™Binutils ื•ื”-libc ืื•ืกืฃ(

crossื™ื™ื•ื•ืฆืจ cross compiling-ืฉืœ ื”ืžืขืจื›ืช(. ื›ืืฉืจ ืขื•ืกืงื™ื ื‘ syscalls-ื”ืกืคืจื™ื•ืช ืฉืขื•ื˜ืคื•ืช ืืช ื”

toolchain.

ื™ืฉ ืฉืชื™ ื“ืจื›ื™ื ,ื‘ืืžืฆืขื•ืชื• ืื•ื›ืœ ืœืงืžืคืœ ืงื•ื“ ืœืžื›ื•ื ื” ืื—ืจืช? ื•ื‘ื›ืŸ toolchainืื– ืื™ืš ื‘ืขืฆื ืžืงื‘ืœื™ื

:ืขื™ืงืจื™ื•ืช

ื™ื ืฉืžื•ืชืืžื™ื -toolchainื™ืฉื ื ืœื ืžืขื˜ ืืชืจื™ื ืฉื‘ื”ื ื™ืฉ ื›ื‘ืจ -ืžื•ื›ืŸ ืžื”ืื™ื ื˜ืจื ื˜ toolchainืœื”ื•ืจื™ื“ .1

-ืžื™ื™ืฆืจืช ืื•ืชื ืžืกืคืงืช ืืช ื”ืจ ืฉืื”ื—ื‘ืจื” , ืœืžื’ื•ื•ืŸ ืจื—ื‘ ืฉืœ ืžืขืจื›ื•ืช. ืœืžืขืฉื”, ืขื‘ื•ืจ ืœื ืžืขื˜ ืจื›ื™ื‘ื™ื

toolchain ื•ืจืžื”. ืœื“ื•ื’ืžืื”ืžืชืื™ื ืœืคืœื˜ืค:

https://developer.arm.com/open-source/gnu-toolchain/gnu-rm/downloads

ื ืจื—ื™ื‘ ื›ืขืช ื”ืขืœื™ - Buildroot-ืœื”ืฉืชืžืฉ ื‘ .2

Buildroot

Buildroot ื”ื™ื ื” ืกื‘ื™ื‘ื” ืฉื ื•ืขื“ื” ืœื”ืงืœ ืขืœ ื‘ื ื™ื™ืชtoolchain- ื™ื ืืฉืจ ืžื•ืจื›ื‘ืช ืžืื•ืกืฃ ืฉืœmakefile- .ื™ื

ื•ื ืฉืืจื” ืžืชื•ื—ื–ืงืช ืžืื– ื›ืืฉืจ ืขื“ื›ื•ื ื™ื ื™ื•ืฆืื™ื ืžื“ื™ ื›ืžื” ื—ื•ื“ืฉื™ื. ืื’ื‘, 2001-ื”ื™ื ืคื•ืจืกืžื” ืœืจืืฉื•ื ื” ื‘

ืฉื ื™ืชื ืช ืœื”ื•ืจื“ื” ื‘ื—ื™ื ื ื•ื ื™ืชืŸ ืœืขืฉื•ืช ื‘ื” ืฉื™ื ื•ื™ื™ื. ื”ื™ืชืจื•ืŸ ืฉืœ open sourceื”ืžืขืจื›ืช ืขืฆืžื” ื”ื™ื ื”

Page 5: If You Build It - It Will (Cross) Compile

If You Build It - It Will (Cross) Compile

www.DigitalWhisper.co.il

5 2018ื™ื ื•ืืจ , 90ื’ืœื™ื•ืŸ

Buildroot ืœื•ืช ื•ื”ื ื•ื—ื•ืช ืฉืœ ื”ืฉื™ืžื•ืฉ ื‘ื”. ืื– ื‘ืžืงื•ื ืœื”ื›ื‘ื™ืจ ื•ื”ื’ื•ืจื ืœื”ืฆืœื—ื” ืฉืœ ื”ืžืขืจื›ืช ื”ื™ื ื• ื”ืง

ื‘ืžื™ืœื™ื ืขืœ ื”ืกื‘ื™ื‘ื” ื‘ื•ืื• ื ืฆืœื•ืœ ืคื ื™ืžื” ืœื”ื“ื’ืžืช ื”ืฉื™ืžื•ืฉ ื‘ื”...

:ืขื ื’ื™ืฉื” ืœืื™ื ื˜ืจื ื˜Ubuntu x86 ืฉืœ VM-ืœืฉื ื”ื”ื“ื’ืžื” ืืฉืชืžืฉ ื‘

ื”ื•ืจื™ื“ื• ืืช ื”ื’ืจืกื” ื”ืื—ืจื•ื ื” ืž-oad.htmlhttps://buildroot.org/downl (ื›ืชื™ื‘ืช ืฉื•ืจื•ืช ืืœื•, ื‘ืขืช

(rarืื• zip-ื‘ื“ื•ืžื” ืœ archive)ืงื•ื‘ืฅ tarืชืงื‘ืœื• ืงื•ื‘ืฅ (. 2017.02.8ื”ื’ืจืกื ื”ืื—ืจื•ื ื” ื”ื™ื ื”

ื”ืขืชื™ืงื• ืืช ื”ืงื•ื‘ืฅtar ืœ-VM ื‘ืืžืฆืขื•ืช(scp ื”ื“ื‘ืง ื‘ืžื™ื“ื” ื•ืžื•ืชืงืŸ ืœื›ื -ืื• ื”ืขืชืงvmware tools ืื•

ื‘ื›ืœ ื“ืจืš ื”ื ื•ื—ื” ืœื›ื(

ืคืชื—ื• ืืช ื”ืงื•ื‘ืฅ ื•ื ื•ื•ื˜ื• ืœืชื™ืงื™ื” ืฉื ื•ืฆืจื”:

tar -xvf buildroot-2017.02.8.tar.gz

cd buildroot-2017.02.8

:ืข"ื™ ื”ืคืงื•ื“ื” ื”ื‘ืื” DOS" ืกื˜ื™ื™ืœ GUIื‘ื“ื•ืžื” ืœื—ื‘ื™ืœื•ืช ืœื™ื ื•ืงืกื™ื•ืช ืื—ืจื•ืช ื ื™ืชืŸ ืœืงื‘ืœ ืชืคืจื™ื˜ ืขื "

make menuconfig

:ื”ืชืงื™ื ื• ืข"ื™, ncurses1ื™ื›ืฉืœ ื•ื™ื“ืจื•ืฉ ืืช ื”ืกืคืจื™ื™ื” ืฉืœ make-ื™ืชื›ืŸ ื›ื™ ื”

apt-get install libncurses-dev

ืขื‘ื•ืจ ื—ื™ืคื•ืฉ โ€/โ€œ-ืœื—ื–ืจื” ืœืฉืœื‘ ื”ืงื•ื“ื ื• ESCืœื›ื ื™ืกื” ืคื ื™ืžื”, Enterื ื™ืชืŸ ืœื ื•ื•ื˜ ื‘ืงืœื•ืช ืข"ื™

ื‘ืฉืœื‘ ื”ื–ื” ื™ื‘ื•ืฆืข ืชื”ืœื™ืš ืงืฆืจ ืฉืœ ืงื•ืžืคื™ืœืฆื™ื” ื•ืœืื—ืจื™ื• ื™ืคืชื— ื”ืžืกืš ื”ื‘ื:

1 ncurses (new curses) ืขื ืืคืœื™ืงืฆื™ื•ืช ืฉืœ ืคื™ืชื•ื— ื”ืžืืคืฉืจืช ื—ื‘ื™ืœื” ื”ื™ื ื” GUI ืชื—ืช ื”ืจืฆื•ืช Terminal

Page 6: If You Build It - It Will (Cross) Compile

If You Build It - It Will (Cross) Compile

www.DigitalWhisper.co.il

6 2018ื™ื ื•ืืจ , 90ื’ืœื™ื•ืŸ

ืฉืœื›ื, toolchain-ื”ืชืคืจื™ื˜ ื”ื "ืœ ืžืืคืฉืจ ืœื”ื’ื“ื™ืจ ื›ืžืขื˜ ื›ืœ ืคืจืžื˜ืจ ืื•ืชื• ืชืจืฆื• ืœืฉื ื•ืช ืขื‘ื•ืจ ื”

ื ื•ื›ืœ ืœืงื‘ื•ืข ืืช ื”ืืจื›' Target Architecture-ื•ืœืื—ืจื™ื• ืœ Target options-ืื ื ื™ื›ื ืก ืœืชืคืจื™ื˜ ื”ืœื“ื•ื’ืžื,

ืฉืœ Endianness-. ืฉื™ืžื• ืœื‘ ื›ื™ ื ื™ืชืŸ ืœื”ื’ื“ื™ืจ ื’ื ืืช ื”ARMืฉืœ ื”ืžืขื‘ื“. ื‘ื“ื•ื’ืžื ืฉืœื ื• ื ืจืฆื” ืœื‘ื—ื•ืจ

:(Little or Big) ื”ืžืขื‘ื“

Page 7: If You Build It - It Will (Cross) Compile

If You Build It - It Will (Cross) Compile

www.DigitalWhisper.co.il

7 2018ื™ื ื•ืืจ , 90ื’ืœื™ื•ืŸ

Target" ื”ืชืคืจื™ื˜ ื™"ืข, ืฉืœื• ืžืคื•ืจื˜ ื”ื™ื•ืชืจ ื”ืกื•ื’ ืืช ืœื‘ื—ื•ืจ ื’ื ื ื™ืชืŸ, ืžืขื‘ื“ ืฉื‘ื—ืจื ื• ื‘ื”ื™ื ืชืŸ

Architecture Variant:"

.ืคื™ื• ืขืœ ืฉื ืงื‘ืขื™ื ื”ืื—ืจื™ื ื”ืชืคืจื™ื˜ื™ื ืขืœ ืžืฉืคื™ืข ื‘ืชืคืจื™ื˜ ืฉื™ื ื•ื™ ื›ืœ

ื•ืœืงืจื•ื( H ืขืœ ืœืœื—ื•ืฅ ื‘ืงื™ืฆื•ืจ ืื•) Help ืขืœ ืœืœื—ื•ืฅ ื ื™ืชืŸ ืœื’ื‘ื™ื” ื‘ื˜ื•ื—ื™ื ืœื ืฉืืชื ืืคืฉืจื•ืช ื™ืฉ ื›ืืฉืจ

-ื‘ ืžื’ื“ื™ืจื” ื”ื™ื ืื•ืชื• ื”ืžืฉืชื ื” ืื•ื“ื•ืช ื”ืžื™ื“ืข ืืช ืœืงื‘ืœ, ืœื›ืš ื•ื‘ื ื•ืกืฃ, ื”ืื•ืคืฆื™ื” ืขืœ ื”ื”ืกื‘ืจ ืืช

Makefile:

Page 8: If You Build It - It Will (Cross) Compile

If You Build It - It Will (Cross) Compile

www.DigitalWhisper.co.il

8 2018ื™ื ื•ืืจ , 90ื’ืœื™ื•ืŸ

ื”ืงื™ื™ืžื•ืช ื‘ืชืคืจื™ื˜ื™ื ืืœื•: ืืคืฉืจื•ื™ื•ืช ืžืขื ื™ื™ื ื•ืช ื ื•ืกืคื•ืช

Toolcahin -> Enable C++ support - ื™ืฉ ืœื‘ื—ื•ืจ ื‘ืืคืฉืจื•ืช ื”ื–ื• ื‘ืžื™ื“ื” ื•ืืชื ืจื•ืฆื™ื ืœืงืžืคืœ ืงื•ื“

C++ืื—ืจืช ืœื ืžื•ืžืœืฅ ืœืกืžืŸ ืื•ืชื” ื›ื™ื•ื•ืŸ ืฉื–ื” ื™ื’ื“ื™ืœ ืืช ื–ืžืŸ ื™ืฆื™ืจืช ื” .-toolchain ื•ื™ื ืคื— ืืช ื’ื•ื“ืœื•.

Toolchain -> C library - ื ื™ืชืŸ ืœื‘ื—ื•ืจ ื‘ืื™ื–ื”libc ( ืœื”ืฉืชืžืฉuClibc ,glibc ,musl )ืœื›ืœ -ื•ืขื•ื“

ืกืคืจื™ื™ื” ื™ืชืจื•ื ื•ืช ื•ื—ืกืจื•ื ื•ืช ืžืฉืœื” )ื’ื•ื“ืœ, ืชืื™ืžื•ืช ืœืื—ื•ืจ, ืžื”ื™ืจื•ืช ืจื™ืฆื”, ืชืžื™ื›ื” ื‘ืžืขื‘ื“ื™ื ื•ื›ื•'(

.ื”ืจื’ื™ืฉื• ื—ื•ืคืฉื™ ืœืฉื•ื˜ื˜ ื‘ืžื’ื•ื•ืŸ ื”ืืคืฉืจื•ื™ื•ืช ื•ืœืฉื—ืง ืื™ืชืŸ

:ืฉื ืžืฆื ื‘ืชื™ืงื™ื™ื” ื”ื ื•ื›ื—ื™ืช config.ืฆืื• ืžื”ืชืคืจื™ื˜ ื•ืฉืžืจื• ืืช ื”ืฉื™ื ื•ื™ื™ื. ื”ืฉื™ื ื•ื™ื™ื ืžืฉืคื™ืขื™ื ืขืœ ื”ืงื•ื‘ืฅ

ื”ืจื™ืฆื• ืืช ื”ืคืงื•ื“ื” ,ื›ืขืชmake , ื‘ืฉืœื‘ ื–ื” ืืชื ื™ื›ื•ืœื™ื ืœืœื›ืช ืœื”ื›ื™ืŸ ืงืคื” ืื• ืืคื™ืœื• ืœืœื›ืช ืœื”ื‘ื™ื

ื›ื™ื•ื•ืŸ ืฉืคืขื•ืœื” ื–ื• ืขืœื•ืœื” ืœืงื—ืช ื”ืจื‘ื” ื–ืžืŸ )ืกื“ืจ ื’ื•ื“ืœ ืฉืœ ื—ืฆื™ ืฉืขื”( Take awayืงืคื”

ืืช ืงื•ื‘ืฅ ื”-.config ืœืžืฉืœ( ืžื•ืžืœืฅ ืœื”ืขืชื™ืง ื”ืฆื™ื“ื” ื•ืœืชืช ืœื• ืฉื ื™ื™ื—ื•ื“ื™.config-arm926le ื•ื›ืš ื‘ื›ืœ .)

Buildroot-ืคืขื ืฉืจื•ืฆื™ื ืœื‘ืฆืข ืฉื™ื ื•ื™ื™ื ืขื‘ื•ืจ ืคืœื˜ืคื•ืจืžื” ืžืกื•ื™ืžืช ื ื™ืชืŸ ืœื”ืขืชื™ืง ืื•ืชื• ืœืชื™ืงื™ื™ื” ืฉืœ ื”

)ืฉื™ืžื• ืœื‘ ืฉื›ืœ ืฉื™ื ื•ื™ ื‘ืชืคืจื™ื˜ ื“ื•ืจืก ืืช ื”ืงื•ื‘ืฅ ื”ื–ื”( config.ื‘ืฉื

Page 9: If You Build It - It Will (Cross) Compile

If You Build It - It Will (Cross) Compile

www.DigitalWhisper.co.il

9 2018ื™ื ื•ืืจ , 90ื’ืœื™ื•ืŸ

/ ื”ืคืœื˜ ืฉืœ ื”ื‘ื™ืœื“ ื ืžืฆื ื‘ืชื™ืงื™ื™ืชoutput/host/usr/binื”ืกืชื›ืœื• ืขืœ ืžื” ื ื•ืฆืจ ื‘ืืžืฆืขื•ืช ./:

ls -al ./output/host/usr/bin

:ืœื“ื•ื’ืžื ืคืœื˜

22ืงื˜ื ื”: ื ืงืžืคืœ ืชื•ื›ื ื”, Buildroot-ืœืื—ืจ ืฉืกื™ื™ืžื ื• ืœื”ื›ื™ืŸ ืืช ื”

#include <stdio.h<

#include <sys/utsname.h<

int main()

}

struct utsname u = { 0 } ;

uname(&u);

printf("%s\n", u.sysname);

printf("%s\n", u.machine);

return 0;

}

:ื•ื ืจื™ืฅ

./output/host/usr/bin/arm-buildroot-linux-uclibcgnueabi-gcc main.c --static -o

unameit

22uname - ื”ื™ื ื•syscall ืžื™ื“ืข ืื•ื“ื•ืช ื”ืจื›ื™ื‘, ืžื•ื–ืžื ื™ื ืœืงืจื•ื ืขืœื™ื• ืข"ื™ ืžื—ื–ื™ืจืจ ืฉืman 2 uname

Page 10: If You Build It - It Will (Cross) Compile

If You Build It - It Will (Cross) Compile

www.DigitalWhisper.co.il

11 2018ื™ื ื•ืืจ , 90ื’ืœื™ื•ืŸ

-ื‘ืฉื‘ื™ืœ ืฉื”ื‘ื™ื ืืจื™ ื™ืงื•ืžืคืœ ืกื˜ื˜ื™ืช. ื‘ืจื•ื‘ ื”ืžืงืจื™ื ื”ืกืคืจื™ื•ืช ื‘ืžื›ื•ื ืช ื” static--ืจืฆื•ื™ ืœื”ื•ืกื™ืฃ ืืช ื”ื“ื’ืœ

target ืœื›ืŸ ืขื“ื™ืฃ ืœื”ื‘ื™ื ืืช ื›ืœ ,ืœื ื™ื”ื™ื• ืชื•ืืžื•ืช ืœืกืคืจื™ื•ืช ืื™ืชืŸ ื”ืชืงืžืคืœื ื• ืื• ืฉืื•ืœื™ ืืคื™ืœื• ื™ื”ื™ื• ื—ืกืจื•ืช

ื”ืชืœื•ื™ื•ืช ืื™ืชื ื•.

:ื ื‘ื“ื•ืง ืžื” ื”ืคื•ืจืžื˜ ืฉืœ ื”ื‘ื™ื ืืจื™ ืฉื™ืฆื

file ./unameit

./unameit: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV),

statically linked, not stripped

:ื ื‘ื™ืŸ ืืช ืคืœื˜ ื”ืคืงื•ื“ื”ื• ื•ื‘ื•ื

ELF 32-bit - ืงื•ื‘ืฅUNIX- ื‘ื™ื˜ 32ื™ ืขื‘ื•ืจ ืžืขื‘ื“

LSB - Least Significant Bit ื›ืœื•ืžืจ ื”ื•ืLittle Endian ืื—ืจืช ื”ื™ื” ื›ืชื•ื‘(MSB)

ARM - ืžืขื‘ื“ ืžืชื•ืฆืจืชARM

EABI5 version 1 - Embedded Application Binary Interface - ื”ื’ืจืกื” ืฉืœ ื”-interface ืžืฉืชืžืฉื™ื .

high level-ืœ low levelื›ื“ื™ ืœื”ื’ื“ื™ืจ ืกื˜ื ื“ืจื˜ื™ื–ืฆื™ื” ื‘ื™ืŸ ืžื ื’ื ื•ื ื™ื ARMื“ื™ ื‘ื–ื” ืขื‘ื•ืจ ืžืขื‘

statically linked - ื›ื™ื•ื•ืŸ ืฉื”ื•ืกืคื ื• ืืช ื”ื“ื’ืœ( ื”ื‘ื™ื ืืจื™ ืžืงื•ืžืคืœ ืกื˜ื˜ื™ืช--static)

not stripped - ืœื ื”ื•ืจื“ื ื• ืžืžื ื• ืืช ื”-symbol-ื™ื

ื–ื” ืงืฆืช ื™ื•ืชืจ ืžืืชื’ืจ - iPhoneื›ืขืช ื ื•ื›ืœ ืœืขืœื•ืช ืื•ืชื• ืœืžื›ืฉื™ืจ ื”ืื ื“ืจื•ืื™ื“ ื•ืœื”ืจื™ืฅ ืื•ืชื• )ืœืืœื• ืžื›ื ืขื

:ืœืžื›ืฉื™ืจ(. ื”ืคืœื˜ ืฉื ืงื‘ืœ Jailbreakืœื”ืจื™ืฅ ื‘ื™ื ืืจื™ื™ื ื›ื™ื•ื•ืŸ ืฉืฆืจื™ืš

ื”ืจืืฉื•ืŸ ืฉืœื›ื! Cross Compiled-ื‘ืจื›ื•ืช, ื”ืจืฆืชื ืืช ื”ื‘ื™ื ืืจื™ ื”

Page 11: If You Build It - It Will (Cross) Compile

If You Build It - It Will (Cross) Compile

www.DigitalWhisper.co.il

11 2018ื™ื ื•ืืจ , 90ื’ืœื™ื•ืŸ

Toolchain vs Buildroot

Buildroot-ืžื•ื›ืŸ ื”ื™ื ื• ื”ืคืชืจื•ืŸ "ื”ืžื”ื™ืจ". ื”ื•ื ื—ื•ืกืš ืืช ื–ืžืŸ ื”ืงืžืคื•ืœ ื‘ Toolchainื›ืคื™ ืฉื•ื•ื“ืื™ ืฉืžืชื ืœื‘,

ื”ื•ื ืคื—ื•ืช ,(. ืžืฆื“ ืฉื ื™ื "ืœ...)ืžื™ ืฉืœื ืงืจื ืืช ื”ืžืืžืจ ื”ืืช ื”ื ื•ืฉื ื”ืชืขืกืงื•ืช ืœืžื™ ืฉืœื ืžื›ื™ืจ ื›"ื› ื•ืืช ื”

ื’ืžื™ืฉ ื•ืขืœ ื›ืŸ ื”ื•ื ืžื•ืžืœืฅ ื‘ืžืงืจื™ื ื‘ื”ื ื™ื•ื“ืขื™ื ื‘ื“ื™ื•ืง ืืช ื”ืคืœื˜ืคื•ืจืžื” ืืœื™ื” ืจื•ืฆื™ื ืœื‘ื ื•ืช ื•ืœื ืจื•ืฆื™ื

ืœื”ืชืขืกืง ื‘ื“ื‘ืจื™ื ืžืกื‘ื™ื‘.

ืื™ื ื• ื—ื™ื ื(, ืืš ืฉื•ื‘, ืžืฆื“ ืฉื ื™ืชืŸ ืœื”ื•ืจื“ื” )ืื• ืฉืœืคืขืžื™ื ื”ื•ื Toolchainื‘ื ื•ืกืฃ, ืœื ืœื›ืœ ืคืœื˜ืคื•ืจืžื” ืงื™ื™ื

. Buildroot-ืฉื ื™, ื’ื ืœื ื›ืœ ืคืœื˜ืคื•ืจืžื” ื ืชืžื›ืช ื‘

ืœืคืœื˜ืคื•ืจืžื” ืžืกื•ื™ืžืช. Toolchainืœื›ืŸ, ื™ืฉ ืœื”ืคืขื™ืœ ืฉื™ืงื•ืœ ื“ืขืช ื›ืืฉืจ ืžื—ืคืฉื™ื ื“ืจืš ืœื™ืฆื•ืจ

ื—ื™ืฆื•ื ื™ Open Sourceืงื•ื“ ืงืžืคื•ืœ

.Cross Compilingื›ืœื•ืžืจ ื ื™ืชืŸ ืœืขืฉื•ืช ืœื”ืŸ Cross Platformืฉื”ื™ื ืŸ Open Sourceืœื ืžืขื˜ ื—ื‘ื™ืœื•ืช ืŸื™ืฉื 

, ื›ืš ืฉื ื”ื™ื” tcpdump, ืœื“ื•ื’ืžื open sourceื‘ื•ื ื ืจืื” ืื™ืš ื ื•ื›ืœ ืœืงืžืคืœ toolchainืขื›ืฉื™ื•, ื›ืฉื™ืฉ ืœื ื• ื›ื‘ืจ

ืžืกื•ื’ืœื™ื ืœื”ืจื™ืฅ ืื•ืชื• ืขืœ ืžื›ืฉื™ืจ ื”ืื ื“ืจื•ืื™ื“ ื•ืœื”ืกื ื™ืฃ ืืช ื”ืชืงืฉื•ืจืช.

ื‘ืฉื‘ื™ืœ ื ื•ื—ื•ืช, ื ื•ืกื™ืฃ ืœ-PATH ืฉืœื ื• ืืช ื”ืชื™ืงื™ื™ื” ืขื ื”-cross compiler ืฉืงืžืคืœื ื•:

PATH=$PATH:/home/user/Desktop/buildroot-2017.02.8/output/host/usr/bin/

ื‘ื›ื“ื™ ืœืงืžืคืœtcpdump ื™ืฉ ืฆื•ืจืš ืœืงืžืคืœ ื’ื ืืชlibpcap )ื”ืกืคืจื™ื™ื” ื”ืžืฉืžืฉืช ื‘ื™ืŸ ื”ื™ืชืจ ืœื”ืกื ืคื”(

ื”ื•ืจื™ื“ื• ืืช ื”ืงื•ื“ ืžื”-repository ื•ื›ื ืกื• ืœืชื™ืงื™ื™ื”:

apt-get source libpcap

apt-get source tcpdump

cd libpcap-1.5.3

ื”ื›ืขืช ื ืจื™ืฅ ืืช ืกืงืจื™ืคื˜-configure ืืฉืจ ื™ืฆื•ืจ ืงื•ื‘ืฅMakefile ืฉืžื•ืชืื ืœืคืจืžื˜ืจื™ื ืฉื ื™ืชืŸ:

CC=arm-buildroot-linux-uclibcgnueabi-gcc ./configure --host=arm-linux --

with-pcap=linux

CC :ื”ืงื•ืžืคื™ื™ืœืจ ืžื” ืงื•ื‘ืข (ื” ืืช ื™ื™ืงื— ืฉืœื ื‘ื›ื“ื™-default ื” ืฉืœ-Ubuntu)

--host :ืขื‘ื•ืจ ืžืงืžืคืœื™ื ืฉืื ื—ื ื• ืงื•ื‘ืข ARM

--with-pcap : ื” ืกื•ื’ ืืช ืงื•ื‘ืข-packet capture .ืžืขืจื›ืช ืขืœ ืœืจื•ืฅ ืจื•ืฆื™ื ืื ื—ื ื• Linux

Page 12: If You Build It - It Will (Cross) Compile

If You Build It - It Will (Cross) Compile

www.DigitalWhisper.co.il

12 2018ื™ื ื•ืืจ , 90ื’ืœื™ื•ืŸ

ื‘ืฉืœื‘ ื–ื” ื™ืชื›ืŸ ื•ืชื™ืชืงืœื• ื‘ืฉื’ื™ืื” ื”ื‘ืื”:

configure: error: Your operating system's lex is insufficient to compile

libpcap

ืœื›ืŸ ื”ืชืงื™ื ื•flex ื•-bison3 3:ื•ื”ืจื™ืฆื• ืฉื•ื‘

apt-get install flex

apt-get install bison

ื”ืจื™ืฆื•make:

make

ื›ืขืช ื ืขืฉื” ื“ื‘ืจ ื“ื•ืžื” ื’ื ืœ-tcpdump ื•ื ืงืžืคืœ ืื•ืชื• ืกื˜ื˜ื™ืช )ืฉื™ืžื• ืœื‘ ืฉ-libpcap ืฆืจื™ืš ืœื”ื™ื•ืช ืชื™ืงื™ื™ื”

:(tcpdumpืื—ืช ืžืื—ื•ืจื™

cd ../tcpdump

CFLAGS=--static CC=arm-buildroot-linux-uclibcgnueabi-gcc ./configure --

host=arm-linux

make

ืื™ื–ื” ืงื•ื‘ืฅ ื™ืฆื ืœื ื• ื ื‘ื“ื•ืง:

file ./tcpdump

./tcpdump: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV),

statically linked, not stripped

ื ื‘ื“ื•ืง ืืช ื’ื•ื“ืœื•:

ls -alh ./tcpdump

-rwxr-xr-x 1 root root 2.2M Dec 13 23:02 ./tcpdump

ืงื˜ืŸ ื™ื•ืชืจื ื•ืจื™ื“ ืžืžื ื• ืืช ื”ืกื™ืžื‘ื•ืœื™ื ื›ืš ืฉื™ื”ื™ื”:

arm-buildroot-linux-uclibcgnueabi-strip ./tcpdump

ื•ื ื‘ื“ื•ืง ืฉื•ื‘ ืืช ื’ื•ื“ืœื• ื•ืืช ื”ืคืจื˜ื™ื ืขืœื™ื•:

ls -alh ./tcpdump

-rwxr-xr-x 1 root root 1.5M Dec 13 23:08 ./tcpdump

file ./tcpdump

./tcpdump: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV),

statically linked, stripped

ืฉื ื™ืชืŸ tcpdumpื™ื‘ืœื ื• ื‘ื™ื ืืจื™ ืฉืœ ืง .strippedืžื’ื” ื•ื›ืชื•ื‘ ืฉื”ื•ื 1.5-ืžื’ื” ืœ 2.2-ืฉื™ืžื• ืœื‘ ืฉื”ื’ื•ื“ืœ ื™ืจื“ ืž

!ARMืœื”ืจื™ืฅ ืื•ืชื• ืขืœ ืžืขื‘ื“

33 BPF (Berkley Packet Filter)-ื” ืืช ืœืคืจืกืจ ืžื ืช ืขืœ libpcap ืขื‘ื•ืจ ื“ืจื•ืฉื™ื ืืฉืจ ืœืงืกื™ืงืœื™ื ืžื ืชื—ื™ื - Bison-ื• Flexื›

Page 13: If You Build It - It Will (Cross) Compile

If You Build It - It Will (Cross) Compile

www.DigitalWhisper.co.il

13 2018ื™ื ื•ืืจ , 90ื’ืœื™ื•ืŸ

?ื”ื™ืขื“ ืคืœื˜ืคื•ืจืžืช ืžื” ืœื“ืขืช ื ื™ืชืŸ ื›ื™ืฆื“

)ื›ืคื™ toolchain-ื™ืฉื ื ืžืงืจื™ื ื‘ื”ื ื ืจืฆื” ืœืงืžืคืœ ืœืžื›ื•ื ื” ื•ื ืจืฆื” ืœื“ืขืช ืืช ื”ืคืจืžื˜ืจื™ื ืฉืœื” ืขื‘ื•ืจ ื”

/ ืžืขื‘ื“ ื•ื›ื•'(. Endiannessืกื•ื’ ืžืข"ื” / -ืฉืฆื™ื™ื ืชื™ ื‘ื”ืชื—ืœื”

:ื™ืฉื ืŸ ืžืกืคืจ ื“ืจื›ื™ื ืœื”ืฉื™ื’ ืืช ื”ืžื™ื“ืข ื”ืจืœื•ื•ื ื˜ื™

ื”ืคืงื•ื“ื” ื”ืจืฆืช "uname -a" - ืœืจื•ื‘ ืชื™ืชืŸ ืœื ื• ืžืกืคื™ืง ืคืจื˜ื™ื ืขืœ ื”ืžืขืจื›ืช ืขืฆืžื” ืืš ืคืงื•ื“ื” ื–ื• ืœื

ืชืžื™ื“ ืงื™ื™ืžืช ืขืœ ื”ืจื›ื™ื‘

ื”ืคืงื•ื“ื” ื”ืจืฆืช "file" ืคืงื•ื“ื” ื–ื• ืžืกืคืงืช ืœื ื• , ื›ืคื™ ืฉืจืื™ื ื• ื‘ื“ื•ื’ืžืื•ืช -ืขืœ ืื—ื“ ื”ื‘ื™ื ืืจื™ื ื‘ืžื›ื•ื ื”

ืขืœ ื”ืžื›ื•ื ื” ืืš ื ื™ืชืŸ ืœื”ื•ืจื™ื“ ืืช ื”ื‘ื™ื ืืจื™ fileื›ืžืขื˜ ืืช ื›ืœ ื”ืคืจื˜ื™ื ื”ืจืœื•ื•ื ื˜ื™ื™ื. ืœื ืชืžื™ื“ ื™ืฉ ืืช

ื™ื›ื•ืœื” ืœืชืช ืžื™ื“ืข ื ื•ืกืฃ. readelf(. ื’ื ื”ืจืฆืช Ubuntu)ืœืžืฉืœ fileื•ืœื”ืจื™ืฅ ืขืœื™ื• ื‘ืžื›ื•ื ื” ื‘ื” ื™ืฉ ืืช

ืงืจื™ืื” ืž-/proc/cpuinfo - ืœื”ืœืŸ ื“ื•ื’ืžื ืžืžื›ืฉื™ืจ ืื ื“ืจื•ืื™ื“:

cat /proc/cpuinfo

Processor : AArch64 Processor rev 4 (aarch64)

model name : ARMv8 Processor rev 4 (v8l)

Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4

idiva

idivt lpae evtstrm aes pmull sha1 sha2 crc32

model name : ARMv8 Processor rev 4 (v8l)

model name : ARMv8 Processor rev 1 (v8l)

ืชืžื™ื“ ืืคืฉืจ ืœื ืกื•ืช ืœื—ืคืฉ ืžื™ื“ืข ืขืœ ื”ืจื›ื™ื‘ ื‘ืื™ื ื˜ืจื ื˜ -ื•ื›ืžื•ื‘ืŸ...

ืกื™ื›ื•ื

Cross Compiling-ืขืœ ื˜ื›ื ื™ืงืช ื”ื‘ืžืืžืจ ื”ื–ื” ืขื‘ืจืชื™ ืงืฆืช ืขืœ ืžื•ืฉื’ื™ื ื‘ืกื™ืกื™ื™ื ื‘ืงื•ืžืคื™ืœืฆื™ื” ื•ื”ืจื—ื‘ืชื™

ืืฉืจ ืžืืคืฉืจืช ืœืงืžืคืœ ื‘ื™ื ืืจื™ื™ื ืžืžืขืจื›ืช ืื—ืช ืœืžืขืจื›ืช ืื—ืจืช. ื›ืžื• ื›ืŸ, ื”ืฆื’ืชื™ ืืช ื”ื˜ื›ื ื™ืงื•ืช ื”ืฉื•ื ื•ืช

ืฉื™ืชืื™ื Toolchainืขืœ ืžื ืช ืœื™ืฆื•ืจ Buildroot-ืœืขืฉื•ืช ื–ืืช ื•ื”ืจื—ื‘ืชื™ ื‘ืคื™ืจื•ื˜ ืขืœ ืื•ืคืŸ ื”ืฉื™ืžื•ืฉ ื‘

ืœืคืœื˜ืคื•ืจืžื” ืืœื™ื” ืืชื ืจื•ืฆื™ื ืœืงืžืคืœ.

ื•ืœื”ื ื’ื™ืฉ ืื•ืชื• ืœืžื™ ืฉืœื ื”ืชื ืกื” Cross Compiling-ืœืคืฉื˜ ืืช ื ื•ืฉื ื”ื”ื™ื” ื”ื "ืœื”ืžื ื™ืข ืœื›ืชื•ื‘ ืืช ื”ืžืืžืจ

ื‘ื›ืš ื‘ืขื‘ืจ ืื• ืœืžื™ ืฉื”ืจื’ื™ืฉ ืฉื”ื•ื ืœื ืžืกืคื™ืง ื™ื•ื“ืข ืžื” ื”ื•ื ืขื•ืฉื” ื•ืข"ื™ ื›ืš ืœื”ืคื•ืš ืืช ื”ื˜ื›ื ื™ืงื” ืœ"ืคื—ื•ืช

, ื”ื™ื” ืœื”ื™ื›ื ืก ื™ื•ืชืจ Cross Compiling-ืžืคื—ื™ื“ื”". ื”ืžื ื™ืข ื”ืื™ืฉื™ ืขื‘ื•ืจื™, ื‘ืชื•ืจ ืžื™ืฉื”ื™ ืฉืžืชืขืกืงืช ืœื ืžืขื˜ ื‘

ืœื‘ ื‘ืชื”ืœื™ืš. ืœืขื•ืžืง ื”ื ื•ืฉื ื•ืœื”ื‘ื™ืŸ ื›ืœ ืฉ

ื™ื•ื ื•ื™ื•ื“ืขื™ื "ืœืชืคืขืœ" ืื•ืชื -ื™ืฉ ืœื ืžืขื˜ ื ื•ืฉืื™ื ื‘ืชื—ื•ื ื”ืžื—ืฉื‘ื™ื ื•ื”ืคื™ืชื•ื— ืฉืื ืฉื™ื ืžืชืขืกืงื™ื ื‘ื”ื ื‘ื™ื•ื

. "(Bits And Bytes-ื ื›ื ืกื™ื ืœ"ืžื” ืฉื ืงืจื ) ื‘ืืžืช ืžื‘ื™ื ื™ื ืžื” ืขื•ืžื“ ืžืื—ื•ืจื™ื”ื ื•ื›ื™ืฆื“ ื”ื ืคื•ืขืœื™ื ืืš ืœื

ื™ื•ืชืจ ื˜ื•ื‘ ืื™ืš ื”ืžื ื’ื ื•ืŸ ืœื›ืŸ, ื”ืžื˜ืจื” ืฉืœื™ ื”ื™ื™ืชื” ืœืขื•ื“ื“ ืืช ืงื•ืจืื™ ื”ืžืืžืจ ืœื”ื™ื›ื ืก ืœืขื•ืžืง ื”ื ื•ืฉื ื•ืœื”ื‘ื™ืŸ

ืขื•ื‘ื“ ื•ืœืชืช ืืช ื”ื›ืœื™ื ืœืขืฉื•ืช ืืช ื›ืœ ื”ืขื•ืœื” ืขืœ ืจื•ื—ื›ื.

ืชื•ื“ื” ืขืœ ืžืงื•ื•ื” ืฉื”ืฉื’ืชื™ ืืช ื”ืžื˜ืจื” ื•ืฉื—ืœืงื›ื ืืฃ ื ื™ืกื• ืœืขืฉื•ืช ื‘ืขืฆืžื›ื ืืช ื”ื“ื‘ืจื™ื ืฉื”ื“ื’ืžืชื™ ื‘ืžืืžืจ.

.ื”ืงืจื™ืื”

Page 14: If You Build It - It Will (Cross) Compile

If You Build It - It Will (Cross) Compile

www.DigitalWhisper.co.il

14 2018ื™ื ื•ืืจ , 90ื’ืœื™ื•ืŸ

ื ื•ืกืคืช ืœืงืจื™ืื” ืงื™ืฉื•ืจื™ื

https://buildroot.org/download.html

https://elinux.org/Toolchains

http://wiki.osdev.org/GCC_Cross-Compiler

https://en.wikipedia.org/wiki/Source-to-source_compiler

https://buildroot.org/

https://en.wikipedia.org/wiki/ARM_architecture

https://en.wikipedia.org/wiki/Recursive_acronym