Post on 18-Oct-2015
description
transcript
5/28/2018 Cross Compile Linux
1/34
Shuah KhanSenior Linux Kernel Developer Open Source Group
Samsung Research America (Silicon Valley)shuah.h!samsung.com
"ross#compiling Linux Kernels onx$%&%' A uorial on *o+ o Ge
Sare,
mailto:shuah.kh@samsung.commailto:shuah.kh@samsung.com5/28/2018 Cross Compile Linux
2/34
Agenda
Cross-compile value proposition
Preparing the system for cross-compiler installation
Cross-compiler installation steps
Demo install arm and arm64
Compiling on architectures
Demo compile arm and arm64
Automating cross-compile testing
Upstream cross-compile testing activity
References and Package repositories
!A
5/28/2018 Cross Compile Linux
3/34
Cross-compile value proposition
"#$ architectures supported %several su&-archs'
(ative compile testing re)uires *ide range of testsystems not practical
A&ility to cross-compile non-natively on an *idelyavaila&le architecture helps detect compile errors
Coupled *ith emulation environments %e+g, )emu' testingon non-native architectures &ecomes easier
etting up cross-compile environment is the first andnecessary step
5/28/2018 Cross Compile Linux
4/34
arch.
alpha
arc
arm
arm64
avr32
c6x
cris
frv
m32r
hexagon
ia64
m68k
metag
microblaze
mn10300
mips
openrisc
h8300
parisc
powerpc
s390
score
xtensa
sparc
tile
um
unicore32
x86
x86_64
sh
blackfin
5/28/2018 Cross Compile Linux
5/34
Cross-compiler packages
U&untu arm packages %/0+/# or later'
gcc-arm-linu1-gnuea&i
gcc-arm-linu1-gnuea&ihf
U&untu arm64 packages %/"+#4 or later' use arm64repo for older U&untu releases+
gcc-4+2-aarch64-linu1-gnu
U&untu keeps adding support for compilers+ earch
U&untu repository for packages+
5/28/2018 Cross Compile Linux
6/34
Cross-compiler packages
3m&edded De&ian Proectis a good resource for alpha5mips5 mipsel5 po*erpc5 sh5 and sparc cross-compilers+
gcc-4+2-alpha-linu1-gnu
gcc-4+2-mips-linu1-gnu gcc-4+2-mipsel-linu1-gnu
gcc-4+2-po*erpc-linu1-gnu
gcc-4+2-sh4-linu1-gnu
gcc-4+2-sparc-linu1-gnu
http://www.emdebian.org/http://www.emdebian.org/5/28/2018 Cross Compile Linux
7/34
Cross-compiler packages
edora repoand edora 3pel Repoare a good sources for severalcross-compilers and &inutils rpms
&lackfin
&inutils-&fin-linu1-gnu-0+0"+7/+#+"-/+fc/2+186964+rpm
gcc-&fin-linu1-gnu-4+2+/-#+/+0#/0#6#6+fc/2+186964+rpm
c61
&inutils-c61-linu1-gnu-0+0"+7/+#+"-/+fc/2+186964+rpm
gcc-c61-linu1-gnu-4+2+0-0+aa+0#/0///4svn+fc/2+186964+rpm
tile
&inutils-tile-linu1-gnu-0+0"+7/+#+"-/+fc/2+186964+rpm
gcc-tile-linu1-gnu-4+2+0-0+aa+0#/0///4svn+fc/2+186964+rpm
http://dl.fedoraproject.org/pub/fedora/linux/updates/testing/17/x86_64/http://dl.fedoraproject.org/pub/epel/6/x86_64/http://dl.fedoraproject.org/pub/epel/6/x86_64/http://dl.fedoraproject.org/pub/fedora/linux/updates/testing/17/x86_64/5/28/2018 Cross Compile Linux
8/34
Preparing the system forcross-compiler installation
Choose an 186-64 system
:nstall U&untu /0+/# or later+
U&untu /"+#4 :nstall
http://www.ubuntu.com/download/desktop/install-desktop-latesthttp://www.ubuntu.com/download/desktop/install-desktop-latest5/28/2018 Cross Compile Linux
9/34
:nstall common packages
suo apt"get install binutils"multiarch
suo apt"get install ncurses"ev
suo apt"get install alien
suo apt"get install buil"essential
#ote$ ncurses"ev is re%uire to run menuconfig an alien to generate &eb from &rpm
5/28/2018 Cross Compile Linux
10/34
Configure apt for arm64 repo%U&untu /0+/#'
wget "' " http$((people&ebian&org()wooke*(bootstrap(bootstrap"archive&ke*+ suo apt"ke* a
suo apt"a"repositor* ,eb http$((people&ebian&org()wooke*(bootstrap(ubunturepo(%uantal"bootstrap main,
suo apt"get upate
http://people.debian.org/~wookey/bootstrap/bootstrap-archive.keyhttp://people.debian.org/~wookey/bootstrap/ubunturepo/http://people.debian.org/~wookey/bootstrap/ubunturepo/http://people.debian.org/~wookey/bootstrap/bootstrap-archive.key5/28/2018 Cross Compile Linux
11/34
Configure apt for emde&ian repo
suo apt"get install emebian"archive"ke*ring
-reate (etc(apt(sources&list&(emebian&list file with the following line$ eb http$((www&emebian&org(ebian( si main
5/28/2018 Cross Compile Linux
12/34
Do*nload rpms from fedora repo
&lackfin rpms,
&inutils-&fin-linu1-gnu-0+0"+7/+#+"-/+fc/2+186964+rpm
gcc-&fin-linu1-gnu-4+2+/-#+/+0#/0#6#6+fc/2+186964+rpm
c61 rpms, &inutils-c61-linu1-gnu-0+0"+7/+#+"-/+fc/2+186964+rpm
gcc-c61-linu1-gnu-4+2+0-0+aa+0#/0///4svn+fc/2+186964+rpm
tile rpms
&inutils-tile-linu1-gnu-0+0"+7/+#+"-/+fc/2+186964+rpm
gcc-tile-linu1-gnu-4+2+0-0+aa+0#/0///4svn+fc/2+186964+rpm
(ote, gcc-tile-linu1-gnu-4+2+0-0+aa+0#/0///4svn+fc/2+186964+rpm is*hat you *ant+ ;he older version is missing feed&ack+h5 tileg1 needs+
5/28/2018 Cross Compile Linux
13/34
Convert rpms to +de&
suo alien " binutils"bfin"linux"gnu"2&23&.1&0&3"1&fc1/&x86_64&rpm
suo alien " gcc"bfin"linux"gnu"4&/&1"0&1&20120606&fc1/&x86_64&rpm
suo alien " binutils"c6x"linux"gnu"2&23&.1&0&3"1&fc1/&x86_64&rpm
suo alien " gcc"c6x"linux"gnu"4&/&2"2&aa&20121114svn&fc1/&x86_64&rpm
suo alien " binutils"tile"linux"gnu"2&23&.1&0&3"1&fc1/&x86_64&rpm
suo alien " gcc"tile"linux"gnu"4&/&2"2&aa&20121114svn&fc1/&x86_64&rpm
You will see warnings about missing keys e.g: below which you can safely ignore.warning: gcc-tile-linux-gnu-4.7.2-2.aa.20121114svn.fc17.x!"!4.r#m:$ea%er &' ()*+)$*2,! )ignature key / 1aca'4!,: 3Y
5/28/2018 Cross Compile Linux
14/34
Resulting +de&s
&inutils-&fin-linu1-gnu90+0"+7/+#+"-09amd64+de&
&inutils-c61-linu1-gnu90+0"+7/+#+"-09amd64+de&
&inutils-tile-linu1-gnu90+0"+7/+#+"-09amd64+de&
gcc-&fin-linu1-gnu94+2+/-/+/9amd64+de& gcc-c61-linu1-gnu94+2+0-"9amd64+de&
gcc-tile-linu1-gnu94+2+0-"9amd64+de&
5/28/2018 Cross Compile Linux
15/34
:nstall cross-compilers
alphasuo apt"get install ""install"recommens gcc"4&/"alpha"linux"gnu
suo ln "s (usr(bin(alpha"linux"gnu"gcc"4&/ (usr(bin(alpha"linux"gnu"gcc
armsuo apt"get install gcc"arm"linux"gnueabi
arm64suo apt"get install ""install"recommens gcc"4&/"aarch64"linux"gnu
suo ln "s (usr(bin(aarch64"linux"gnu"gcc"4&/ (usr(bin(aarch64"linux"gnu"gcc
mips
suo apt"get install ""install"recommens gcc"4&/"mips"linux"gnu suo ln "s (usr(bin(mips"linux"gnu"gcc"4&/ (usr(bin(mips"linux"gnu"gcc
mipselsuo apt"get install ""install"recommens gcc"4&/"mipsel"linux"gnu
suo ln "s (usr(bin(mipsel"linux"gnu"gcc"4&/ (usr(bin(mipsel"linux"gnu"gcc
5/28/2018 Cross Compile Linux
16/34
:nstall cross-compilers
powerpcsuo apt"get install ""install"recommens gcc"4&/"powerpc"linux"gnu
suo ln "s (usr(bin(powerpc"linux"gnu"gcc"4&/ (usr(bin(powerpc"linux"gnu"gcc
shsuo apt"get install ""install"recommens gcc"4&/"sh4"linux"gnu
suo ln "s (usr(bin(sh4"linux"gnu"gcc"4&/ (usr(bin(sh4"linux"gnu"gcc
arm64suo apt"get install ""install"recommens gcc"4&/"aarch64"linux"gnu
suo ln "s (usr(bin(aarch64"linux"gnu"gcc"4&/ (usr(bin(aarch64"linux"gnu"gcc
sparcsuo apt"get install ""install"recommens gcc"4&/"sparc"linux"gnu suo ln "s (usr(bin(sparc"linux"gnu"gcc"4&/ (usr(bin(sparc"linux"gnu"gcc
Note: Creating link to *arch*-linux-gnu-gcc is necessary as theCROSS_COMPILE irecti!e
to "in the co#$ilers%
5/28/2018 Cross Compile Linux
17/34
:nstall cross-compilers from +de&s
blackfinsuo pkg "i binutils"bfin"linux"gnu_2&23&.1&0&3"2_am64&eb
suo pkg "i gcc"bfin"linux"gnu_4&/&1"1&1_am64&eb
c6xsuo pkg "i binutils"c6x"linux"gnu_2&23&.1&0&3"2_am64&eb
suo pkg "i gcc"c6x"linux"gnu_4&/&2"3_am64&eb
tilesuo pkg "i binutils"tile"linux"gnu_2&23&.1&0&3"2_am64&eb suo pkg "i gcc"tile"linux"gnu_4&/&2"3_am64&eb
5/28/2018 Cross Compile Linux
18/34
arch.compile
alpha
arc
arm
arm64
avr32
c6x
cris
frv
m32r
hexagon
ia64
m68k
metag
microblaze
mn10300
mips
openrisc
h8300
parisc
powerpc
s390
score
xtensa
sparc
tile
um
unicore32
x86
x86_64
sh
blackfin
5/28/2018 Cross Compile Linux
19/34
s &uild9crossscript
do*nloads compiler sources for a specified arch fromgnu repo5 &uilds and installs+
Usage, &uild9cross arm
Runs on fedora
http://mchehab.fedorapeople.org/build_crosshttp://mchehab.fedorapeople.org/build_cross5/28/2018 Cross Compile Linux
20/34
Demo arm and arm64 install
5/28/2018 Cross Compile Linux
21/34
Compilation ;ips
:f make ARC?@arch defconfig fails on an arch5 pick aconfig to test from arch..configs
ome architectures don>t support defconfig in
cross-compile mode+ e+g, po*erpc+ :n some cases5 you might see errors in BD phase5 and
please keep in mind these are ust compile tests+
5/28/2018 Cross Compile Linux
22/34
alphamake istclean
make -alpha efconfig -alpha -'_-'57alpha"linux"gnu" make all
Cross-compiling
arm
make istclean make -arm efconfig -arm -'_-'57arm"linux"gnueabi" make all
arm64 :3&/ an later;make istclean
make -arm64 efconfig -arm64 -'_-'57aarch64"linux"gnu" make all
blackfinmake istclean
make -blackfin efconfig-blackfin -'_-'57bfin"linux"gnu" make all
5/28/2018 Cross Compile Linux
23/34
mips
make istclean make -mips efconfig
-mips -'_-'57mips"linux"gnu" make all
Cross-compiling
mipselmake istclean
make -mips efconfig
-mips -'_-'57mipsel"linux"gnu" make all
powerpcmake istclean
cp arch(powerpc(configs(wii_efconfig &config -powerpc -'_-'57powerpc"linux"gnu" make all
c6x :3&4 an later;make istclean
make -c6x efconfig -arm64 -'_-'57aarch64"linux"gnu" make all
5/28/2018 Cross Compile Linux
24/34
sparcmake istclean
make -sparc efconfig -sparc -'_-'57sparc"linux"gnu" make all
Cross-compiling
tilemake istclean
make -tile efconfig -tile -'_-'57tile"linux"gnu" make all
shmake istclean
make -sh efconfig -sh -'_-'57sh4"linux"gnu" make all
5/28/2018 Cross Compile Linux
25/34
Demo arm and arm64 compilation
5/28/2018 Cross Compile Linux
26/34
Automating cross-compile testing
cript cross9compile+shautomates &uilds for thecompilers mentioned in this talk
ktest crosstests+conf
5/28/2018 Cross Compile Linux
27/34
Upstream Cross-compile testingactivity
Binu1 ernel sta&le )ueue &uilds proect
uenter Rock keeps adding ne* compilers each*eek+
Configs, allmodconfig5 defconfig5 configs *ith mmu
and *ithout %nommu' *here applica&le+
)emu test results on selected architectures+
http://server.roeck-us.net:8010/buildershttp://server.roeck-us.net:8010/builders5/28/2018 Cross Compile Linux
28/34
5/28/2018 Cross Compile Linux
29/34
5/28/2018 Cross Compile Linux
30/34
5/28/2018 Cross Compile Linux
31/34
References and Packagerepositories
AR=v8 De&ian and U&untu &ootstrap repositories
3m&edded De&ian Proect
edora Repo
edora 3pel Repo ernel+org - crosstool
U&untu /"+#4 :nstall
5/28/2018 Cross Compile Linux
32/34
Q&A
5/28/2018 Cross Compile Linux
33/34
Shuah KhanSenior Open Source Developer Open Source GroupSamsung Research America (Silicon Valley)
shuah.h!samsung.com
-han you.
mailto:shuah.kh@samsung.commailto:shuah.kh@samsung.com5/28/2018 Cross Compile Linux
34/34
ummary
Cross-compiling Binu1 ernels on 186964, A tutorial on ?o* to ettarted
Agenda
Cross-compile value proposition
arch.
Cross-compiler packages
Cross-compiler packages
Cross-compiler packages
Preparing the system for cross-compiler installation
:nstall common packages
Configure apt for arm64 repo %U&untu /0+/#' Configure apt for emde&ian repo
Do*nload rpms from fedora repo
Convert rpms to +de&
Resulting +de&s
:nstall cross-compilers
:nstall cross-compilers
:nstall cross-compilers from +de&s
arch.compile