一からやり直す
以前のclangでclangをビルドするのにいろいろ手こずっていたら、最初からやりなしたくなった。
復習:libc++abiを用意
前回と同じなので巻きで。 今回はインストールまでしておく。
cd ~/Projects svn co http://llvm.org/svn/llvm-project/libcxxabi/trunk libcxxabi cd libcxxabi/lib TRIPLE=-apple- ./buildit cp libc++abi.dylib ~/lib
復習:svnで最新版ゲット
最初からやり直すと行っても、本当は何も全部消す必要は無いのだけどね、心機一転、全部消したところから始める。 "svn update"で十分だと思う。
どうやらlibc++はllvm/projectsの中に入れるとllvmのビルド対象に入れるっぽい。やってみる。
cd ~/Projects svn co http://llvm.org/svn/llvm-project/llvm/trunk llvm 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 co http://llvm.org/svn/llvm-project/compiler-rt/trunk compiler-rt svn co http://llvm.org/svn/llvm-project/libcxx/trunk libcxx
ビルド&インストールその1
まずは普通にビルド。上のlibc++abiはまだ使わない。
make check-all←なぜか通らない
cd .. mkdir build cd build cmake -G "Unix Makefiles" \ -D LLVM_ENABLE_LIBCXX=ON \ -D CMAKE_INSTALL_PREFIX="$HOME/opt/llvm" \ .. make -j5 check make -j5 make install ln -Fs ~/opt/llvm/bin/* ~/bin ln -Fs ~/opt/llvm/lib/* ~/lib ln -Fs ~/opt/llvm/include/* ~/include
ここでやめてもいいけど、最新のコンパイラで最新のコンパイラをビルドしたい。 そこまでする意味があるかはわからないけど。
ビルド&インストールその2
参照1:http://llvm.org/docs/CMake.html
参照2:http://libcxx.llvm.org/
今度は割りと真剣にビルドするつもりで、libc++abiを使ってC++11を有効にしてReleaseタイプでビルド。
cd .. mkdir build2 cd build2 CC=clang CXX=clang++ \ cmake -G "Unix Makefiles" \ -D LIBCXX_CXX_ABI=libcxxabi \ -D LIBCXX_LIBCXXABI_INCLUDE_PATHS="$HOME/Projects/libcxxabi/include" \ -D LLVM_ENABLE_LIBCXX=ON \ -D LLVM_ENABLE_CXX11=ON \ -D CMAKE_BUILD_TYPE=Release \ -D CMAKE_INSTALL_PREFIX="$HOME/opt/llvm" \ -D CMAKE_CXX_FLAGS="-I $HOME/include/c++/v1" \ -D CMAKE_SHARED_LINKER_FLAGS="-L $HOME/lib -l c++abi" \ -D CMAKE_EXE_LINKER_FLAGS="-L $HOME/lib -l c++abi" \ .. make -j5 check make -j5
おわかりいただけただろうか?
ld: building for iOS Simulator, but linking against dylib built for MacOSX file '/Users/skystar0227/lib/libc++abi.dylib' for architecture x86_64
iOS Simulator向けビルドでlibc++abi.dylibのリンクが失敗したということで、libc++abiを"-arch armv7"で再ビルドしてみたけどダメ。 Googleさんからも情報を見つけられなくて手詰まり。失敗…
CMake: 余談
自分の理解的には"CC=clang cmake .."と"cmake -D CMAKE_C_COMPILER=clang .."って同じっぽい。 コマンド叩くときは短い前者がいいと思う。
疲れました
Googleで情報が見つからないと何もできない… 欲をださなければ苦しむことはないんだけど。
0 件のコメント:
コメントを投稿