全体の流れ

ディレクトリ構成

ビルド作業ルート
/usr/local/src
SRC_ROOT (LLVMのソースファイル)
/usr/local/src/llvm-2.2
OBJ_ROOT (LLVMオブジェクト ファイル作成用)
/usr/local/src/llvm-obj
LLVMDIR (LLVMインストールディレクトリ)
/usr/local/llvm
GCC_SRC_ROOT (LLVM GCCのソースファイル)
/usr/local/src/llvm-gcc4.2-2.2.source
GCC_OBJ_ROOT (LLVM GCCのオブジェクト ファイル作成用)
/usr/local/src/llvm-gcc-obj
LLVMGCCDIR (llvm-gccインストール)
/usr/local/llvm-gcc

/usr/local でなくて一般ユーザーの $HOME の下で作業しても良い。

ソースのダウンロード

/usr/local/src にダウンロードする。ダウンロードページ http://llvm.org/releases/download.html#2.2

llvmのビルド

# cd /usr/local/src
# tar zxf llvm-2.2.tar.gz
# mkdir $OBJ_ROOT (/usr/local/src/llvm-obj)
# cd $OBJ_ROOT
# ${SRC_ROOT}/configure --prefix=${LLVMDIR} --enable-optimized
# make -j3 (-j オプションは任意)
# make install

llvm-gccのビルド

# tar zxf llvm-gcc4.2-2.2.source.tar.gz
# mkdir $GCC_OBJ_ROOT (/usr/local/src/llvm-gcc-obj)
# cd $GCC_OBJ_ROOT
# ${GCC_SRC_ROOT}/configure --prefix=${LLVMGCCDIR} \
    --enable-languages=c,c++ \
    --enable-llvm=${OBJ_ROOT} \
    --program-prefix=llvm-
# make -j3
# make install

llvm-gccを使ってllvmをビルド

# cd $OBJ_ROOT
# ${SRC_ROOT}/configure --prefix=${LLVMDIR} \
    --enable-optimized \
    --with-llvmgccdir=${LLVMGCCDIR} \
    --enable-targets=native # クロスコンパイル環境なし(指定しなくても良い)
# make -j3
# make install

ノート

llvm-g++ で出来あがった実行ファイルは /usr/lib/gcc/i686-pc-linux-gnu/4.1.2/libstdc++.so.6: version `GLIBCXX_3.4.9' not found のようにエラーを吐くので LD_LIBRARY_PATH を指定するか static でビルドする。

llvm-g++ コンパイルオプション
-L/usr/local/llvm-gcc/lib -I/usr/local/llvm-gcc/include -lstdc++
LD_LIBRARY_PATH を指定して実行
LD_LIBRARY_PATH=/usr/local/llvm-gcc/lib ./foobar
static にコンパイル
-static オプションを付ける。
自分の環境だけの設定
~/.bashrc などで LD_LIBRARY_PATH を設定する。export LD_LIBRARY_PATH=/usr/local/llvm-gcc/lib:$LD_LIBRARY_PATH
システムワイドな設定
/etc/env.d に gcc-i686-pc-linux-gnu より優先するファイルを作成する。ここでは 00lvm としよう。内容は以下の通り。

00lvm

PATH="/usr/local/llvm/bin:/usr/local/llvm-gcc/bin"
LDPATH="/usr/local/llvm/lib:/usr/local/llvm-gcc/lib"
MANPATH="/usr/local/llvm/share/man:/usr/local/llvm-gcc/man"
INFOPATH="/usr/local/llvm-gcc/info"

env-update の実行を忘れずに。env.d を使った場合、システム全体に影響するので何をやっているのかわからない人は止めておこう。

参考サイト

最終更新日 2009-05-28 16:47:47