LLVM 3.5リリース
参照:http://lists.cs.uiuc.edu/pipermail/llvm-announce/2014-September/000055.html
い ま さ ら 感。2014.9.4くらいにリリースされてた。
LLVMプロジェクトの各ホームページを見るといくつか更新があるようだ。libc++とlibc++abiにも更新が!
前回(3月かよ)はミスや勘違いいろいろあったし、そもそもライブラリのリンクを十分に理解してなかったようなのでもう一度やり直す。
libc++abiがCMake対応
参照:http://libcxxabi.llvm.org/
LLVMのビルドツリーにチェックアウトすると、LLVMのビルドで一緒にビルドされるようになってる。素敵。
libc++もツリー内ビルドの記述がわかりやすく
参照:http://libcxx.llvm.org/
trunkからビルドされたlibc++のリンクのさせ方とかもわかりやすくなった。
MBAにllvm/clang環境再構築
せっかくなのでチェックアウトから
libcxxabiのチェックアウト場所を変えたので、すべてチェックアウトする。もちろん面倒なので実際にはしていない。 大事なのはディレクトリ"llvm"以下の構造。ディレクトリ"~/Projects"に"llvm"をチェックアウトするのは趣味。
cd ~/Projects svn co http://llvm.org/svn/llvm-project/llvm/trunk llvm cd llvm/projects svn co http://llvm.org/svn/llvm-project/compiler-rt/trunk compiler-rt svn co http://llvm.org/svn/llvm-project/libcxxabi/trunk libcxxabi svn co http://llvm.org/svn/llvm-project/libcxx/trunk libcxx cd llvm/tools svn co http://llvm.org/svn/llvm-project/cfe/trunk clang cd clang/tools svn co http://llvm.org/svn/llvm-project/clang-tools-extra/trunk extra
更新するときは
こんな感じ。主に自分の備忘録。
cd ~/Projects svn update llvm cd llvm svn update projects/{compiler-rt,libcxxabi,libcxx} cd tools/clang svn update {.,tools/extra}
ビルド&インストール
最新のclangで最新のclangをビルドするとか面倒すぎて嫌になってきたので(意味もよく分かってないし)、一回でビルドする。 なお、"~/bin"はパス通してる。
cd ~/Projects/llvm mkdir build cd build cmake \ -D CMAKE_BUILD_TYPE=Release \ -D CMAKE_INSTALL_PREFIX=$HOME/opt/llvm \ .. make -j5 && make -j5 check && make install ln -Fs ~/opt/llvm/bin/* ~/bin ln -Fs ~/opt/llvm/lib/* ~/lib ln -Fs ~/opt/llvm/include/* ~/include
デフォルトでC++14まで有効になってる。以前に比べてだいぶすっきり。 それもこれもlibc++とlibc++abiがツリー内ビルドできるおかげ。
試しに使ってみる
which clang++
% which clang++ /Users/skystar0227/bin/clang++
よさそう
includeパスの検索順序を調べてみる
% clang++ -v -c -x c++ -o /dev/null /dev/null clang version 3.6.0 (217873) Target: x86_64-apple-darwin13.3.0 Thread model: posix "/Users/skystar0227/opt/llvm/bin/clang-3.6" (省略) -x c++ /dev/null clang -cc1 version 3.6.0 based upon LLVM 3.6.0svn default target x86_64-apple-darwin13.3.0 ignoring nonexistent directory "/usr/include/c++/v1" #include "..." search starts here: #include <...> search starts here: /Users/skystar0227/opt/llvm/bin/../include/c++/v1 /usr/local/include /Users/skystar0227/opt/llvm/bin/../lib/clang/3.6.0/include /usr/include /System/Library/Frameworks (framework directory) /Library/Frameworks (framework directory) End of search list.
よさそう
ライブラリのリンクを確認する
普通にコンパイル&リンクすると
% clang++ -std=c++14 helloworld.cpp % otool -L a.out a.out: /usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 120.0.0) /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1197.1.1)
trunkからビルドしたlibc++およびlibc++abiをリンクすると
% DYLD_LIBRARY_PATH=$HOME/lib \ > clang++ -std=c++14 -stdlib=libc++ -L $HOME/lib -l c++abi helloworld.cpp % otool -L a.out a.out: @rpath/libc++abi.1.dylib (compatibility version 1.0.0, current version 1.0.0) @rpath/libc++.1.dylib (compatibility version 1.0.0, current version 1.0.0) /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1197.1.1)
よさそう
結論
環境構築あっさりできたので僕は満足です。そろそろコード書きたい… 月に一回は更新したい…
0 件のコメント:
コメントを投稿