Cross Compile Linux

download Cross Compile Linux

of 34

description

Linux compilation manual

Transcript of Cross Compile Linux

  • 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:[email protected]:[email protected]
  • 5/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-latest
  • 5/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.key
  • 5/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_cross
  • 5/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/builders
  • 5/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:[email protected]:[email protected]
  • 5/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