comparison CbC/GCC.md @ 0:e12992dca4a0

init from Growi
author anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
date Wed, 16 Dec 2020 14:05:01 +0900
parents
children 2f33bc3a5b9b
comparison
equal deleted inserted replaced
-1:000000000000 0:e12992dca4a0
1 # CbC on GCC について
2
3 ## インストール方法
4
5 - まずはMercurialリポジトリから GCC を取得
6
7 ```
8 % hg clone ssh://one@www.cr.ie.u-ryukyu.ac.jp/hg/CbC/CbC_devel (保存先。指定しない場合./CbC_develになる)
9 ```
10
11 - 次にインストール先のディレクトリを作る。ついでにそこに移動。 (!! 必ずCbC_develの外に作ってね! !!)
12 ```
13 % mkdir (いんすとーるするとこ)
14 % cd (↑でつくったとこ)
15 ```
16
17 - OSX Maverics以降の場合は GMP, MPFR, MPCが必要。configure実行前にインストールする必要がある。
18 - gcc4.9.0ではGMP 4.2以上, MPFR 2.4.0以上 MPC 0.8.0以上が要求される。
19 - homebrewでインストールする場合、それぞれのformula名はgmp,mpfr,libmpcです。
20
21 - configureを実行する。この時、インストール先のディレクトリに移動済みであることを確認すること。
22 ```
23 % (GCCとってきた場所)/configure CFLAGS="-g3 -O0" --prefix=$PWD \
24 - -disable-nls --disable-bootstrap --enable-languages=c \
25 - -enable-checking=tree,rtl,assert,types
26 ```
27 - 各オプションについて
28 - -g3
29 gdbでのmacroの展開を可能にする。
30 - -O0
31 最適化のカット。
32 - --prefix=dir
33 インストール先のディレクトリ指定。
34 - --disable-nls
35 gettextのl10nをoffに。
36 - --disable-bootstrap
37 通常GCCは3回ビルドされるがこれを1回だけに限定。
38 - --enable-languages
39 使用する言語の指定。
40 - --enable-checking
41 デバッグ用の指定。browse_tree,debug_rtx,assertがonになる。
42
43
44 - makeする
45 ```
46 % make && make install
47 ```
48
49 - インストールされたかチェックする。
50 ```
51 % (インストールした場所)/bin/gcc --version
52 ```
53 正しくインストールされていればバージョンが見れるはず。見れたら適当なコードで正しく動くか確認すること。
54
55 ## gdbで動かす場合の手順
56 - まず動かすときの引数を得る
57
58 ```
59 % (CbC_GCC) (source file) -v |& grep cc1
60 ```
61 これで実際に実行されるコマンドと引数が取れるので引数だけコピーする。
62
63 - gdbを動かす
64 ```
65 % gdb --args (さっきコピーしたものを貼る)
66 ```
67 これでうごくはず。正しく動かない場合はmakeがちゃんとできているか、configureのオプションを間違えていないかなどを確認する。
68
69 ## lldbで動かす場合の手順
70 実行時の引数は一緒なのでgdbで動かす場合のとこ見て。
71 - lldbを動かす
72 ```
73 % lldb (gccのパス)
74 ```
75 - 実行
76 ```
77 (lldb) r (コピーしたやつ)
78 ```
79
80 ## gdbのちょっとしたテクニック
81 ### 何度も引っかかるタイプのブレークポイントの最後の一回が見たいとき
82 - まずコンテニューかけまくる
83 ```
84 (gdb) c 9999
85 ```
86 - おそらくは9999回もコンテニューせずに実行が終了する。ここでbreak pointの情報を見る
87 ```
88 (gdb) info b
89 ```
90 見たいとこが何回止まったのかを確認する。already hit 〜 とかかかれているはず。
91 - 最後の一回で止まるように仕向ける
92 通常実行したらさっき見た数字分break pointを通過するということなので、その回数-1回分無視するようにする。
93 ```
94 (gdb) ignore (break pointの番号) (さっきの数字-1)
95 ```
96 これで止まるはず。