annotate CbC-INSTALL @ 32:59194914942b

add documents. CbC-INSTALL: howto build the gcc for various systems. CbC-implementation.ja: methods of implementation for CbC's statement.
author kent <kent@cr.ie.u-ryukyu.ac.jp>
date Tue, 08 Dec 2009 14:07:28 +0900
parents cc07adb17855
children d645ac0f55d6
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
29
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2 * CbC on GCCのインストール方法
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
3
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
4 まずはMercurialリポジトリから取得
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
5 hg clone ssh://one@firefly.cr/hg/CbC/GCC cbc-gcc
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
6 ビルド用ディレクトリへ
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
7 mkdir build-gcc; cd build-gcc
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
8 コンフィギュア
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
9 一般的には以下のconfigureでビルドできる
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
10 ../cbc-gcc/configure CFLAGS="-g3 -O0"
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
11 --prefix=$PWD/INSTALL_DIR --disable-nls \
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
12 --disable-bootstrap --enable-languages=c \
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
13 --enable-checking=tree,rtl,assert,types
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
14
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
15 -g3:
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
16 gdbでmacroの展開を可能にする
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
17 -O0:
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
18 gdbでトレースしやすいように、最適化をカット
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
19 --prefix:
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
20 インストールするベースディレクトリ
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
21 --enbale-checking:
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
22 デバグ用の指定、browse_treeやdebug_rtx、assertもこれでonになる
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
23 --disable-bootstrap:
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
24 通常、GCCは3回ビルドされる。それを最初の1回だけに限定
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
25 --disable-nls:
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
26 gettextのl10nをoffにしよう
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
27 --enable-language:
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
28 使用する言語 c|c++|ada ... もちろんCbCはcだけ
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
29 これもcbcを使えるようにしたい
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
30 ビルド
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
31 make && make install
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
32
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
33
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
34
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
35 * PowerPC Macでのインストール
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
36
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
37 最新のlibgmp, libmpfrをインストール
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
38 [gmp]
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
39 ./configure --enable-cxx --build=powerpc-apple-darwin9 --host=powerpc-apple-darwin9
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
40 make && make install
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
41 [mpfr]
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
42 ./configure --build=powerpc-apple-darwin9 --host=powerpc-apple-darwin9
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
43 make && make install
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
44 [CbC on GCC]
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
45 ../cbc-gcc/configure CFLAGS="-g3 -O0" --with-gmp=/usr/local
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
46 --with-mpfr=/usr/local --prefix=$PWD/INSTALL_DIR \
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
47 --disable-nls --disable-bootstrap --enable-languages=c \
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
48 --enable-checking=tree,rtl,assert,types
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
49 make && make install
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
50 もちろんインストール場所によってprefixは変更しよう
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
51
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
52
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
53
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
54
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
55 * PS3でのビルド
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
56 SPU
32
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
57 ../CbConGCC/configure --prefix=/usr/local/spu-cbc \
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
58 --build=powerpc --target=spu --program-prefix=spu- \
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
59 --disable-bootstrap --enable-checking=tree,rtl,assert \
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
60 --disable-nls --disable-shared --disable-threads \
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
61 --enable-languages=c --with-system-zlib --with-newlib \
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
62 --enable-version-specific-runtime-libs --disable-libssp \
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
63 --with-gnu-as -with-as=/usr/bin/spu-as --with-gnu-ld \
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
64 --with-ld=/usr/bin/spu-ld
29
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
65 PPU
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
66 binutils
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
67 $ tar xzvf binutils-...tar.gz
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
68 $ mkdir binutils_4ps3
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
69 $ cd binutils_4ps3
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
70 $ ../binutils../configure --prefix=$PWD/INSTALL_DIR
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
71 > --target=ppc64-yellowdog-linux
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
72 $ make install
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
73 $ cd ..
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
74 cross gcc
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
75 $ mkdir gcc_4ps3
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
76 $ PATH=$PWD/../binutils_4ps3/INSTALL_DIR/bin:$PATH
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
77 $ ../CbConGCC/configure --prefix=$PWD/INSTALL_DIR
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
78 > --enable-language=c --target=ppc64-yellowdog-linux
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
79 > --with-newlib --with-included-gettext --enable-shared
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
80 > --enable-threads
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
81 $ make
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
82
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
83
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
84
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
85 * 琉球大学総合情報センターのSolarisサーバでのビルド (sparc)
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
86
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
87 なぜかデフォルトのgccが自分のライブラリすら見てくれないのでパスを指定
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
88 export LD_LIBRARY_PATH=/usr/local/lib:/usr/local/lib/gcc:$HOME/opt/lib
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
89 export LIBRARY_PATH=/usr/local/lib:/usr/local/lib/gcc:$HOME/opt/lib
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
90 gmpのインストール
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
91 ./configure --prefix=$HOME/opt \
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
92 --build=sparc-sun-solaris \
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
93 --host=sparc-sun-solaris
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
94 make
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
95 make check
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
96 make install
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
97 libmpfrのインストール
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
98 ./configure --prefix=$HOME/opt/ \
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
99 --with-gmp=$HOME/opt
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
100 --build=sparc-sun-solaris \
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
101 --host=sparc-sun-solaris
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
102 make
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
103 make check
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
104 make install
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
105 # sparc-sun-solaris2.10の方がいいかもしれない
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
106 CbCをインストール
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
107 ../CbCGCC/configure --prefix=$PWD/INSTALL_DIR --disable-nls \
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
108 --disable-bootstrap --enable-languages=c \
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
109 --with-gmp=$HOME/opt --with-mpfr=$HOME/opt \
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
110 --build=sparc-sun-solaris2.10 --target=sparc-sun-solaris2.10 \
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
111 --host=sparc-sun-solaris2.10 --enable-shared \
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
112 --with-as=/usr/ccs/bin/as --with-ld=/usr/ccs/bin/ld
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
113 make
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
114 make install
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
115 ビルドは可能。
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
116 ただし、実行は不能 goto cs();すら動かない
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
117 config/sparc/sparc.cのoutput_sibcall()でエラーが出る
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
118 gdbがインストールされてないので詳細は未調査
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
119 もしかしてsibcallってあまり実装されてないんじゃ…
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
120
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
121
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
122
32
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
123 ___________________________________________________________
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
124 PS3用のクロスコンパイラの作成
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
125 -----------------------------------------------------------
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
126
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
127 PS3でのGCCのビルドはメモリが少なすぎるためか、insn-*.cのコンパイルに膨
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
128 大な時間がかかってしまう。
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
129 なので別のマシンからPS3をターゲットとしたクロスコンパイラを作成する。
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
130 ただしこれはCbConGCCの開発のためと考えた方が良い。実際にCbC言語を使っ
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
131 たプログラムをPS3で開発する際はちゃんとPS3上にノンクロスコンパイラを作
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
132 成しよう。時間はかかるがビルドは可能。
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
133
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
134 * 必要なもの
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
135 o binutilsのソース
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
136 o gccのソース
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
137 o ターゲットマシンのlib*.{a,so}類
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
138 o ターゲットマシンの.hファイル
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
139 ~/PS3CROSSにクロスコンパイラ環境を整えるとする
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
140 ~/PS3CROSS/cross-tools: クロスコンパイルに使うツールのインストール先
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
141 ~/PS3CROSS/sources: ソース置き場、出来上がったら消してもいいよ
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
142 ~/PS3CROSS/target-env: ターゲット環境(libやinclude)が入ったディレクトリ
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
143
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
144 * 準備
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
145 $ CROSS=$HOME/PS3CROSS
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
146 $ cd $CROSS
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
147 $ mkdir sources cross-tools target-env
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
148 $ cd sources
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
149 $ wget ... binutilsとかgccのソースをダウンロード
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
150
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
151 * binutilsのビルド
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
152 $ tar xvf binutils..tar.gz
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
153 $ mkdir PS3-binutils-build; cd !#1
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
154 $ ../binutils-.../configure --prefix=$CROSS/cross-tools \
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
155 --with-lib-path=$CROSS/target-env \
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
156 --hosti686-pc-linux-gnu --build=i686-pc-linux-gnu \
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
157 --target=ppc64-redhat-linux --enable-64-bit-bfd \
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
158 --disable-nls --enable-shared --with-sysroot
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
159 $ make && make install
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
160
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
161 * ターゲットマシンの環境をコピーする
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
162 $ cd $CROSS/target-env
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
163 $ mkdir include lib lib64
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
164 $ ln -s . usr
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
165 ## 必要なライブラリはすべてコピー
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
166 $ cd lib
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
167 $ rsync -avl 'charles.cr:/lib/libc[.-_]*' ./
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
168 $ rsync -avl 'charles.cr:/usr/lib/libc[.-_]*' ./
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
169 $ rsync -avl 'charles.cr:/usr/lib/crt*' ./
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
170 $ rsync -avl 'charles.cr:/lib/ld*' ./
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
171 $ cd ../lib64
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
172 $ .....
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
173 ## ヘッダは軽いので全部コピー
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
174 $ cd ../include
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
175 $ rsync -avl 'charles.cr:/usr/include/*' ./
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
176
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
177 * GCCのビルド
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
178 $ cd $CROSS/sources
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
179 $ mkdir PS3-gcc-build; cd !#1
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
180 $ ../.../configure --prefix=$CROSS/cross-tools
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
181 --host=i686-pc-linux-gnu --target=ppc64-redhat-linux
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
182 --with-sysroot=$CROSS/target-env --disable-nls
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
183 --disable-shared --disable-threads
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
184 --enable-languages=c --without-headers
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
185 --disable-bootstrap
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
186 $ make all-gcc
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
187 $ make ## エラーで終わるけど気にするな
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
188 $ make install-gcc
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
189 $ make install-target-libgcc
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
190
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
191 * テスト
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
192 $ cat >test.c <<EOF
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
193 #include<stdio.h>
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
194 int
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
195 main(int argc, char **argv)
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
196 {
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
197 int a=0;
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
198 int i;
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
199 for (i=0; i<10; i++) {
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
200 a = i;
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
201 }
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
202 printf("hello world\n");
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
203 printf("a = %d\n", a);
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
204 return a;
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
205 }
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
206 EOF
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
207 $ $CROSS/cross-tools/bin/gcc -m32 test.c -o test32
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
208 $ $CROSS/cross-tools/bin/gcc -m64 test.c -o test64
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
209 $ file test32 test64
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
210 test32: ELF 32-bit MSB executable, PowerPC or cisco 4500, version 1 (SYSV), for GNU/Linux 2.6.9, dynamically linked (uses shared libs), not stripped
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
211 test64: ELF 64-bit MSB executable, 64-bit PowerPC or cisco 7500, version 1 (SYSV), for GNU/Linux 2.6.9, dynamically linked (uses shared libs), not stripped
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
212 $ scp test{32,64} PS3Machine:
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
213 PS3Machine $ ./test32
29
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
214
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
215
cc07adb17855 deleting old commented out code.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
216
32
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
217
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
218
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
219
59194914942b add documents.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 29
diff changeset
220