% git clone http://llvm.org/git/llvm.git (保存先。指定しない場合./llvmになる) % cd llvm/tools % git clone http://llvm.org/git/clang.git
% hg clone ssh://one@www.cr.ie.u-ryukyu.ac.jp/hg/CbC/CbC_llvm (保存先。指定しない場合./CbC_llvmになる)
% mkdir (いんすとーるするとこ) % cd (↑でつくったとこ)
% (llvmとってきた場所)/configure --prefix=$PWD --disable-optimized --enable-debug-runtime\ % --enable-debug-symbols --enable-assertions
% make -jオプションjをつけてうまくいかないときは -jなしで試す。 ※jは並列にビルドするオプション。速度は上がるがときどき上手くいかないことがある。
% (インストールした場所)/Debug+Asserts/bin/clang -v正しくインストールされていればバージョンが見れるはず。見れたら適当なコードで正しく動くか確認すること。
makeすると時間かかるからね。
% configure -V
% (CbC_LLVM) (source file) -### |& grep cc1これで実際に実行されるコマンドと引数が取れるので引数だけコピーする。
% gdb --args (さっきコピーしたものを貼る)これでうごくはず。正しく動かない場合はmakeがちゃんとできているか、configureのオプションを間違えていないかなどを確認する。
実行時の引数は一緒なのでgdbで動かす場合のとこ見て。
% lldb (clangのパス)
(lldb) r (コピーしたやつ)
(gdb) c 9999
(gdb) info b見たいとこが何回止まったのかを確認する。already hit 〜 とかかかれているはず。
(gdb) ignore (break pointの番号) (さっきの数字-1)これで止まるはず。
LLVMの場合distcleanではなくdist-clean。なのでconfigureからやり直したかったりで綺麗にしたい場合は
% make dist-clean
但し間違ってソースファイルと同じ場所に入れちゃった場合はできない。
% clang -cc1 -ast-dump (source file)
もしくは
% clang -Xclang -ast-dump -c (source file)
% clang -cc1 -ast-print (source file)
内部でコードを生成したときにそれが実際に上手くいったかどうか確認するときとか使える。
% clang (source file) -S -emit-llvm
% llvm-as (アセンブリ表現のbit code)
% llc -print-machineinstrs (LLVM IR file)
標準エラー出力に出力される。
% git clone http://llvm.org/git/llvm.git (保存先。指定しない場合./llvmになる) % cd llvm/tools % git clone http://llvm.org/git/clang.git
% hg clone ssh://one@www.cr.ie.u-ryukyu.ac.jp/hg/CbC/LLVM_original % cd LLVM_original % rm -rf ./* % mv ../llvm/* ./
% hg status % hg remove --after % hg add (新しく増えたファイルで必要なもの。) % hg commit % hg push
% hg tag -r (リビジョン番号) "LLVM X.X"
% cd ../CbC_LLVM % hg incoming ../LLVM_original % hg pull ../LLVM_original % hg merge
% hg commit % hg push
% cmake -G Ninja -DCMAKE_BUILD_TYPE:STRING=Debug -DCMAKE_INSTALL_PREFIX:PATH=`pwd` ~/hg/CbC/LLVM_original
% clang -print-search-dirs
% brew tap ie-developers/ie % brew install cbc
でcbcがインストールされる。
% brew install cbc --HEAD
でRepositoryのHEADがインストールされる.
http://www.cr.ie.u-ryukyu.ac.jp/software/debug/CbCM.tgz
lldbがソースを見つけられるようにsymbolic link が必要。
% sudo mkdir -p /Users/kono/src/public % sudo ln -s `pwd`/CbC /Users/kono/src/public % sudo ln -s `pwd`/CbC_llvm /Users/kono/src/public
で、
% sudo lldb -- ./Debug+Asserts/bin/clang -cc1 -S hello.c
l main で main が表示されれば Ok 。