Galileo?

IntelのGalileoにGolangを入れる - Galileo

概要

GalileoでGoが動くといいよねという電波を受信したのでやってみた.
どうやらGolang自体のクロスビルドは相当大変そうだったので,Galileo上でビルドすることにした.

結論から言うと無理です.以下は作業ログ

セットアップ

この方法を使用するには,拙作のイメージを使用する必要がある.
(Intel標準イメージでやる場合は,自分でパッケージ類をビルドしなければならない)
ミニイメージのダウンロード

その上で,
作成したIntelのGalileoのSDカード用Linuxイメージを使う - Galileo
IntelのGalileoでパッケージマネージャopkgを使う - Galileo
にある方法に従ってパッケージマネージャの設定を行う.

設定が終わったら,以下のパッケージをインストールする.

root@clanton:~# opkg update
root@clanton:~# opkg install mercurial gcc gcc-symlink

Goのソースコードの取得

Installing Go from source - The Go Programming Languageの"Fetch the repository"に従う.
とてつもなく時間がかかるのでアーカイブで落としてきたほうがいいかも.

ビルド…の前に

デフォルトではbusyboxのシェルが立ち上がっているはずなので,bashで入っておく必要がある.

root@clanton:~# chsh -s /bin/bash

で再起動,もしくは今回だけbashを使うなら単に

root@clanton:~# bash

でbashに入ればよい.

また,arもbusyboxにあるものを指しているようなので,これもふつうのものに変更.(多少荒療治だが仕方ない)

root@clanton:~# rm /usr/bin/ar
root@clanton:~# ln -s /usr/bin/i586-poky-linux-ar /usr/bin/ar

ビルド

root@clanton:~# cd go/src
root@clanton:~/go/src# ./all.bash
# Building C bootstrap tool.
cmd/dist

# Building compilers and Go bootstrap tool for host, linux/386.
lib9
libbio
libmach
misc/pprof
cmd/addr2line
cmd/nm
cmd/objdump
cmd/pack
cmd/prof
cmd/cc
cmd/gc
cmd/8l
cmd/8a
cmd/8c
cmd/8g
pkg/runtime
pkg/errors
pkg/sync/atomic
pkg/sync
pkg/io
pkg/unicode
pkg/unicode/utf8
pkg/unicode/utf16
pkg/bytes
pkg/math
pkg/strings
pkg/strconv
pkg/bufio
pkg/sort
pkg/container/heap
pkg/encoding/base64
pkg/syscall
pkg/time
pkg/os
pkg/reflect
pkg/fmt
pkg/encoding
pkg/encoding/json
pkg/flag
pkg/path/filepath
pkg/path
pkg/io/ioutil
pkg/log
pkg/regexp/syntax
pkg/regexp
pkg/go/token
pkg/go/scanner
pkg/go/ast
pkg/go/parser
pkg/os/exec
pkg/os/signal
pkg/net/url
pkg/text/template/parse
pkg/text/template
pkg/go/doc
pkg/go/build
cmd/go
./make.bash: line 151:  3106 Illegal instruction     "$GOTOOLDIR"/go_bootstrap clean -i std

怒られた.

root@clanton:~/go# find . | grep go_bootstrap
./pkg/tool/linux_386/go_bootstrap
root@clanton:~/go# cd pkg/tool/linux_386/
root@clanton:~/go/pkg/tool/linux_386# ./go_bootstrap clean -i std
Illegal instruction
root@clanton:~/go/pkg/tool/linux_386# ./go_bootstrap
Illegal instruction
root@clanton:~/go/pkg/tool/linux_386# ls -l                           
total 11272
-rwxr-xr-x 1 root root  275663 Feb 14 22:49 8a
-rwxr-xr-x 1 root root  957559 Feb 14 22:52 8c
-rwxr-xr-x 1 root root 1789740 Feb 14 22:54 8g
-rwxr-xr-x 1 root root  883944 Feb 14 22:49 8l
-rwxr-xr-x 1 root root  438528 Feb 14 22:34 addr2line
-rwxr-xr-x 1 root root   69723 Feb 14 22:29 dist
-rwxr-xr-x 1 root root 5798336 Feb 14 22:56 go_bootstrap
-rwxr-xr-x 1 root root  360053 Feb 14 22:34 nm
-rwxr-xr-x 1 root root  443486 Feb 14 22:35 objdump
-rwxr-xr-x 1 root root  310275 Feb 14 22:35 pack
-rwxr-xr-x 1 root root  157784 Feb 14 22:34 pprof
root@clanton:~/go/pkg/tool/linux_386# file go_bootstrap 
go_bootstrap: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, not stripped
root@clanton:~/go/pkg/tool/linux_386# file ./addr2line 
./addr2line: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.16, BuildID[sha1]=b9814c57d0b81117baa1219f793461088a22a0d5, not stripped
root@clanton:~/go/pkg/tool/linux_386# file ./objdump 
./objdump: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.16, BuildID[sha1]=90630a1aad323afbef52b86840f9d6d89485fea1, not stripped
root@clanton:~/go/pkg/tool/linux_386# file ./nm      
./nm: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.16, BuildID[sha1]=a87af638fa115fd776574fba54c9942055e1f00f, not stripped

ふむふむ…

参考

Installing Go from source - The Go Programming Language
Setting bash as default shell
Gentoo Forums - Problem with BASH and busybox and compiling issue

コメントはこちら



トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2014-03-28 (金) 02:58:03 (1098d)