if you build it - it will (cross) compile
TRANSCRIPT
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ืื ืืื ืื ืื ืจืืืื ืื ืื ืืืขืจืืืช ืืคืขืื ืืืจืืช ืืืื
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 ืืขืื
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ืขื
.ืืฉืื ืขืืื ืืื ืืงื ืื ืฉืืืฉ ืืคืืืืช ืคืืืืืืืช ืฉืื ืฉืืชืงืืคืืืืื ืืงื ื ืงืจืืช ืื ืืืกืืื ืืืืืจื
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ืืืขืจืืช ืขืฆืื ืืื ื
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
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) ืืืขืื
If You Build It - It Will (Cross) Compile
www.DigitalWhisper.co.il
7 2018ืื ืืืจ , 90ืืืืื
Target" ืืชืคืจืื ื"ืข, ืฉืื ืืคืืจื ืืืืชืจ ืืกืื ืืช ืืืืืจ ืื ื ืืชื, ืืขืื ืฉืืืจื ื ืืืื ืชื
Architecture Variant:"
.ืคืื ืขื ืฉื ืงืืขืื ืืืืจืื ืืชืคืจืืืื ืขื ืืฉืคืืข ืืชืคืจืื ืฉืื ืื ืื
ืืืงืจืื( H ืขื ืืืืืฅ ืืงืืฆืืจ ืื) Help ืขื ืืืืืฅ ื ืืชื ืืืืื ืืืืืื ืื ืฉืืชื ืืคืฉืจืืช ืืฉ ืืืฉืจ
-ื ืืืืืจื ืืื ืืืชื ืืืฉืชื ื ืืืืืช ืืืืืข ืืช ืืงืื, ืืื ืืื ืืกืฃ, ืืืืคืฆืื ืขื ืืืกืืจ ืืช
Makefile:
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.ืืฉื
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
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-ืืจืืืช, ืืจืฆืชื ืืช ืืืื ืืจื ื
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
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ื
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-ื ืื ืกืื ื"ืื ืฉื ืงืจื ) ืืืืช ืืืื ืื ืื ืขืืื ืืืืืจืืื ืืืืฆื ืื ืคืืขืืื ืื ืื
ืืืชืจ ืืื ืืื ืืื ืื ืื ืืื, ืืืืจื ืฉืื ืืืืชื ืืขืืื ืืช ืงืืจืื ืืืืืจ ืืืืื ืก ืืขืืืง ืื ืืฉื ืืืืืื
ืขืืื ืืืชืช ืืช ืืืืื ืืขืฉืืช ืืช ืื ืืขืืื ืขื ืจืืืื.
ืชืืื ืขื ืืงืืื ืฉืืฉืืชื ืืช ืืืืจื ืืฉืืืงืื ืืฃ ื ืืกื ืืขืฉืืช ืืขืฆืืื ืืช ืืืืจืื ืฉืืืืืชื ืืืืืจ.
.ืืงืจืืื
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