LLVMのビルド方法

公式ページ参照するのが正確

最新のLLVMはcmakeとninja-build推奨になってる

ソースコードの取得

gitから取得する
本家のSVNから取得する
アーカイブされたソースコードを取得する


gitからソースコード一式を取得する

sudo apt-get install ninja-build

git clone --depth 1 http://llvm.org/git/llvm.git
pushd llvm/tools
  git clone --depth 1 http://llvm.org/git/clang.git
popd
pushd llvm/projects
  git clone --depth 1 http://llvm.org/git/compiler-rt.git
popd

svnでソースコード一式を取得する

#!/bin/bash
mkdir -p trunk
svn co http://llvm.org/svn/llvm-project/llvm/trunk ./trunk

pushd trunk/tools
  svn co http://llvm.org/svn/llvm-project/cfe/trunk clang
  svn co http://llvm.org/svn/llvm-project/clang-tools-extra/trunk extra
  svn co http://llvm.org/svn/llvm-project/lldb/trunk lldb
  svn co http://llvm.org/svn/llvm-project/lld/trunk lld
popd

pushd trunk/project
  svn co http://llvm.org/svn/llvm-project/libcxx/trunk libcxx
  svn co http://llvm.org/svn/llvm-project/libcxxabi/trunk libcxxabi
  svn co http://llvm.org/svn/llvm-project/compiler-rt/trunk compiler-rt
popd

配布されているアーカイブを解答して環境を整える

  $ tar zxvf llvm-2.8.tar.gz
  $ tar zxvf clang-2.8.tar.gz
  $ mv clang-2.8 tools

cmakeによるビルド方法

なんかしくじったらbuildディレクトリ消してやり直すのがいいかも
  mkdir build && cd build
  cmake .. -DCMAKE_BUILD_TYPE=Debug
  cmake --build .

以降はllvm-3.7以前のみ有効

ビルドオプションを表示する

  $ configure --help

Release版ビルド

  $ mkdir -p build && pushd build
  $ ../configure --enable-optimized
  $ make
#trunk版は、デフォでDebugビルドだったかもしれない。

Debug版ビルド

  $ mkdir -p build && pushd build
  $ ../configure --disable-optimized --enable-assertions --enable-debug-runtime --enable-debug-symbols
  $ make

Targetを指定してビルド

$ mkdir -p build && pushd build
 $ ../configure --enable-targets=x86,x86_64,arm64,aarch64,arm

パラレルビルド

  $ make -j2
# -jN にてパラレルビルドが可能。CPU数に合わせるとよい。

lldbのビルドに失敗したら

普通にやると、lldbはc++11で開発されているので、ビルドエラーかも
build/tools/lldb/Makefileに以下を追記している。configureで指定できるんだっけ?
CXX.Flags += -fno-strict-aliasing -std=c++11

ビルド. 推奨はビルドディレクトリを別にする。

$ mkdir build
 $ pushd build
 $ ../configure --disable-optimized --enable-assertions --enable-debug-runtime --enable-debug-symbols --enable-targets=arm,x86
 $ make
#やりかたおかしいかも。。別ディレクトリを切らないと、objectがllvm/libの中に入り込んで色々と不便。
#もしclangのバイナリが生成されていなかった場合、tools/clangでmake

回帰テストの走らせ方

  $ make check
    LLVM テストを走らせます。 make check VERBOSE=1 とかもやってみてください。
  $ make check-all
    clang とあわせてビルドした際に、clang テストもあわせて実施します。
以前発生した不具合の再現TPが、llvm/testの下にどっさり入っています。

TODO: CMake ビルドについて書く。


Windows VisualStudioでのビルドとデバッグ方法

Linux GDBでのデバッグ方法

Linux Eclipseでのビルドとデバッグ方法

Linux NetBeansでのビルドとデバッグ方法

Gitで最新版(svn版とかTop of Trunkと呼ばれるヤツ)と戯れる。

$ (cd llvm/tools; ln -s ../../clang .)
(Git のサブモジュールは使ってないのでやり方忘れました。)
初回リポジトリクローンは数分要します。

更新のやり方(llvm, clang どちらでも実施してね)
$ git checkout master
$ git pull --rebase

git を使う人は master 上で改造とかしないようにね、必ずブランチ切るんだよ。それが git 者。

ちなみにレポジトリの大本が svn であるためもあり、私は rebase 派です。

$ git checkout orebranch
$ git rebase -i master

chapuni 開発版


Windows 向けを重点的にやってるのでそこんとこよろしく!


豆知識

Makefile.configのTARGETS_TO_BUILDの不要なターゲットを#でコメントアウトするとビルドが速くなる
(configure の --enable-targets で指定できるヤツです。不要なバックエンドがビルドされなくなる。ex --enable-targets=arm,x86)

  • 最終更新:2016-05-04 10:21:33

このWIKIを編集するにはパスワード入力が必要です

認証パスワード