2014年2月9日日曜日

MBAでllvm/clang環境構築をやり直した(が失敗した

一からやり直す

以前の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 件のコメント:

コメントを投稿