Upgrade to Pro — share decks privately, control downloads, hide ads and more …

クロスコンパイルについて (GeekSalon#7)

クロスコンパイルについて (GeekSalon#7)

Shintaro Kaneko

May 29, 2015
Tweet

More Decks by Shintaro Kaneko

Other Decks in Programming

Transcript

  1. ΫϩείϯύΠϧ
    (FFL4BMPO

    View Slide

  2. ࣗݾ঺հ
    ۚࢠ৻ଠ࿠ 4IJOUBSP,BOFLP

    ‣ גࣜձࣾΤ΢ϨΧ
    ‣ QBJSTͷ։ൃશൠ୲౰
    ‣ ࠷ۙ͸(PݴޠͰ։ൃ͍ͯ͠·͢
    kaneshin
    kaneshinth
    shintaro.kaneko
    J04"OESPJE8FCFOHJOFFS

    View Slide

  3. View Slide

  4. Copyright © 2009-2015 eureka, Inc. All rights reserved.
    גࣜձࣾΤ΢ϨΧ
    ࣄۀ಺༰
    ࣗࣾαʔϏεͷاըɾ։ൃɾӡӦ
    wΦϯϥΠϯɾσʔςΟϯάɾαʔϏεʮQBJSTʯ
    wΧοϓϧઐ༻ΞϓϦʮ$PVQMFTʯ
    ւ֎ڌ఺
    w།ྷՈވ㟨༗ݶެ࢘ʢ୆࿷ʣ
    w&63&,"4(1UF-UEʢγϯΨϙʔϧʣ
    Copyright © 2009-2015 eureka, Inc. All rights reserved.
    ΤϯδχΞ

    ඇΤϯδχΞ

    ࣾһ਺ਓ
    Πϯλʔϯɾۀ຿ҕୗؚΉ
    ฏۉ೥ྸࡀ

    View Slide

  5. Copyright © 2009-2015 eureka, Inc. All rights reserved.

    View Slide

  6. ຊ೔࿩͢͜ͱ

    View Slide

  7. ظ଴age
    ͍͍CLIπʔϧ࡞͔ͬͨΒ
    ࢖ͬͯΈͯΑ
    go get github.com/
    kaneshin/giita/cmd/giita Ͱ
    ΠϯετʔϧͰ͖Δ͔Βʂ
    ໘౗͔ͩΒ exe ͰΫϨ
    ˞ϑΟΫγϣϯͰ͢

    View Slide

  8. ໘౗͔ͩΒ exe ͰΫϨ
    ͑ͬ
    ͑ͬ͑ͬ
    exe Λ஌Βͳ͍ૉਓ͔…
    ࡶڕΊ………
    ˞ϑΟΫγϣϯͰ͢

    View Slide

  9. FYFͰΫϨ

    View Slide

  10. FYFͰΫϨ
    ʊਓਓਓਓਓਓਓਓਓਓਓਓਓʊ
    ʼ ಥવͷWindowsϢʔβʔ ʻ
    ʉ̮̮̮̮̮̮̮̮̮̮̮̮̮ʉ
    ʊਓਓਓਓਓਓਓਓਓਓਓʊ
    ʼ ࡶڕͬͯݴΘͳ͍Ͱ ʻ
    ʉ̮̮̮̮̮̮̮̮̮̮̮ʉ

    View Slide

  11. FYFͰΫϨʢFYFʹݶΒͳ͍ʣ
    ‣ ʮHPHFUͰ؆୯Πϯετʔϧ̇ʯ
    ‣ ͱɺݴΘΕͯ΋(P͕ແ͍ͱμϝʢ౰ͨΓલʣ
    ‣ όΠφϦΛʮϋΠɺͲ͏ͧʯʹউΔखܰ͞͸ແ͍
    ‣ %-Ϙλϯԡ͚͕ͩ͢޷·͍͠

    View Slide

  12. View Slide

  13. go  get  …

    View Slide

  14. ΑΖ͍͠

    View Slide

  15. ͳΒ͹ɺΫϩείϯύΠϧͩ

    View Slide

  16. ΫϩείϯύΠϧͱ͸

    View Slide

  17. ΫϩείϯύΠϧͱ͸
    ίϯύΠϥ͕ಈ࡞͍ͯ͠ΔϓϥοτϑΥʔϜҎ֎ʹ
    ޲͚࣮ͨߦϑΝΠϧΛੜ੒͢Δ͜ͱ
    ૊ΈࠐΈػثͰ͸ҰൠతʹߦΘΕ͍ͯΔ

    View Slide

  18. (PͰΫϩείϯύΠϧ

    View Slide

  19. (PͰΫϩείϯύΠϧ
    ଞϓϥοτϑΥʔϜ޲͚ύοέʔδͷ֬ೝ
    ଞϓϥοτϑΥʔϜ޲͚ύοέʔδͷϏϧυ
    ΫϩείϯύΠϧͷํ๏

    View Slide

  20. ଞϓϥοτϑΥʔϜ޲͚
    ύοέʔδͷ֬ೝ

    View Slide

  21. ύοέʔδͷ֬ೝ
    ଞϓϥοτϑΥʔϜ޲͚ʹϏϧυࡁͳΒ͹
    ଞϓϥοτϑΥʔϜͷσΟϨΫτϦ TUBUJDMJCSBSJFT
    ͕ଘࡏ͢Δ
    [kaneshin] ~
    $ ls -1 $(go env GOROOT)/pkg
    darwin_amd64/
    linux_amd64/
    linux_amd64_race/
    obj/
    tool/

    View Slide

  22. ύοέʔδͷ֬ೝ
    ଞϓϥοτϑΥʔϜ޲͚ʹϏϧυࡁͳΒ͹
    ଞϓϥοτϑΥʔϜͷσΟϨΫτϦ TUBUJDMJCSBSJFT
    ͕ଘࡏ͢Δ
    [kaneshin] ~
    $ ls -1 $(go env GOROOT)/pkg
    darwin_amd64/
    linux_amd64/
    linux_amd64_race/
    obj/
    tool/

    View Slide

  23. ύοέʔδͷ֬ೝʢ͓·͚ɿHPFOWʣ
    [kaneshin] ~
    $ go env
    GOARCH="amd64"
    GOBIN=""
    GOCHAR="6"
    GOEXE=""
    GOHOSTARCH="amd64"
    GOHOSTOS="linux"
    GOOS="linux"
    GOPATH="/home/kaneshin/gopath"
    GORACE=""
    GOROOT="/usr/local/share/go/default"
    GOTOOLDIR="/usr/local/share/go/default/pkg/tool/linux_amd64"
    CC="gcc"
    GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0"
    CXX="g++"
    CGO_ENABLED="1"

    View Slide

  24. ଞϓϥοτϑΥʔϜ޲͚
    ύοέʔδͷϏϧυ

    View Slide

  25. [kaneshin] ~
    $ cd $(go env GOROOT)/src
    [kaneshin] /path/to/go/src
    $ export GOOS=windows
    $ export GOARCH=amd64
    $ ./make.bash —no-clean
    [kaneshin] /path/to/go/src
    $ GOOS=windows GOARCH=amd64 ./make.bash --no-clean
    ύοέʔδͷϏϧυ
    ͦΕͧΕͷϓϥοτϑΥʔϜ޲͚ʹύοέʔδΛϏϧυ
    ؀ڥม਺ͷ(004 (0"3$)Λࢦఆͯ͠Ϗϧυ

    View Slide

  26. [kaneshin] ~
    $ cd $(go env GOROOT)/src
    [kaneshin] /path/to/go/src
    $ export GOOS=windows
    $ export GOARCH=amd64
    $ ./make.bash --no-clean
    [kaneshin] /path/to/go/src
    $ GOOS=windows GOARCH=amd64 ./make.bash --no-clean
    ύοέʔδͷϏϧυ
    ͦΕͧΕͷϓϥοτϑΥʔϜ޲͚ʹύοέʔδΛϏϧυ
    ؀ڥม਺ͷ(004 (0"3$)Λࢦఆͯ͠Ϗϧυ
    Ͳͬͪ΋ಉ͡
    1
    2-1
    2-2

    View Slide

  27. ύοέʔδͷϏϧυʢ֬ೝʣ
    Ϗϧυ͕ऴΘͬͨΒ֬ೝ
    [kaneshin] ~
    $ ls -1 $(go env GOROOT)/pkg
    darwin_amd64/
    linux_amd64/
    linux_amd64_race/
    obj/
    tool/
    windows_amd64/

    View Slide

  28. ύοέʔδͷϏϧυʢ֬ೝʣ
    Ϗϧυ͕ऴΘͬͨΒ֬ೝ
    [kaneshin] ~
    $ ls -1 $(go env GOROOT)/pkg
    darwin_amd64/
    linux_amd64/
    linux_amd64_race/
    obj/
    tool/
    windows_amd64/
    ૿͑ͯΔʂ

    View Slide

  29. ύοέʔδͷϏϧυʢ(004ͱ(0"3$)ͷछྨʣ
    $GOOS $GOARCH
    freebsd 386
    freebsd amd64
    freebsd arm
    linux 386
    linux amd64
    linux arm
    netbsd 386
    netbsd amd64
    netbsd arm
    openbsd 386
    openbsd amd64
    $GOOS $GOARCH
    darwin 386
    darwin amd64
    dragonfly 386
    dragonfly amd64
    plan9 386
    plan9 amd64
    solaris amd64
    windows 386
    windows amd64
    छྨͷ૊Έ߹Θ͕ͤଘࡏ͢Δ
    ͭ·Γɺશͯͷ؀ڥͷίϯύΠϥΛ
    ༻ҙ͢Δʹ͸ճϏϧυ͕ඞཁ

    View Slide

  30. ΫϩείϯύΠϧͷํ๏

    View Slide

  31. go  build  -­‐i  /path/to/repo

    View Slide

  32. go  build  -­‐i  /path/to/repo
    $  GOOS=windows  GOARCH=amd64  \

    View Slide

  33. ΫϩείϯύΠϧͷํ๏
    [kaneshin] /tmp/giita
    $ GOOS=darwin GOARCH=amd64 go build -i \
    github.com/kaneshin/giita/cmd/giita
    $ GOOS=windows GOARCH=amd64 go build -i \
    github.com/kaneshin/giita/cmd/giita
    $ ls -1
    giita*
    giita.exe*
    ͦΕͧΕͷϓϥοτϑΥʔϜ޲͚ʹϏϧυ͢Δ
    (004 (0"3$)ͷ؀ڥม਺Λࢦఆͯ͠Ϗϧυ

    View Slide

  34. ΫϩείϯύΠϧͷํ๏
    [kaneshin] /tmp/giita
    $ GOOS=darwin GOARCH=amd64 go build -i \
    github.com/kaneshin/giita/cmd/giita
    $ GOOS=windows GOARCH=amd64 go build -i \
    github.com/kaneshin/giita/cmd/giita
    $ ls -1
    giita*
    giita.exe*
    ͦΕͧΕͷϓϥοτϑΥʔϜ޲͚ʹϏϧυ͢Δ
    (004 (0"3$)ͷ؀ڥม਺Λࢦఆͯ͠Ϗϧυ
    8JOEPXT CJU
    ༻όΠφϦ͕׬੒

    View Slide

  35. ׬੒ͨ͠όΠφϦΛ
    Ξοϓϩʔυ͢Δ

    View Slide

  36. just  click!

    View Slide

  37. "QQFOEJYΫϩείϯύΠϧ
    ‣ ࠓճͷ࿩͠͸γϯϓϧͳ࣮ࢪํ๏
    ‣ ΫϩείϯύΠϧΛαϙʔτ͢Δίϯϙʔωϯτ΋୔ࢁ͋Γ·͢
    ‣ IPNFCSFX
    ‣ CSFXJOTUBMMHPDSPTTDPNQJMFBMMDPNNPO
    ‣ HJUIVCDPNEBWFDIFOFZHPMBOHDSPTTDPNQJMF
    ‣ HJUIVCDPNNJUDIFMMIHPY
    ‣ HJUIVCDPNMBIFSHPYD

    View Slide

  38. ·ͱΊ
    ‣ ଞϓϥοτϑΥʔϜ޲͚όΠφϦ࡞Δͱ୭͔͕ϋοϐʔʹͳΔ
    ‣ ଞͷݴޠͱൺֱ͢ΔͱଞϓϥοτϑΥʔϜ΁ͷ഑෍͕खܰ
    ‣ --ͷΑ͏ʹ୭͔͕࣮ߦ͢ΔͨΊʹݴޠͷόʔδϣϯΛҙࣝ͢Δ
    ඞཁ΋ͳ͍
    ‣ $-*πʔϧ࡞ͬͨޙʹެ։͢ΔͳΒੋඇʢࣗռࠐʣ

    View Slide

  39. Copyright © 2009-2015 eureka, Inc. All rights reserved.
    5IBOLZPV

    View Slide