請閱讀 README。

前端為 gcc45,優化和代碼生成使用 LLVM 的元件,這部分利用 gcc plugin。DragonEgg 的簡介請見 Reimplementing llvm-gcc as a gcc plugin

$ wget http://llvm.org/releases/3.2/dragonegg-3.2.src.tar.gz
$ tar xzf dragonegg-3.2.src.tar.gz
$ sudo apt-get install gcc-4.7-plugin-dev
$ cd dragonegg-3.2.src
$ GCC=gcc-4.7 LLVM_CONFIG=directory_where_llvm_installed/bin/llvm-config make
$ gcc -fplugin=./dragonegg.so -fplugin-arg-dragonegg-emit-ir -S test1.c

建置 LLVM

$ wget http://llvm.org/releases/2.9/llvm-2.9.tgz; tar xvf llvm-2.9.tgz;
$ mkdir build; cd build
$ ../llvm-2.9/configure --prefix=/path/to/install --enable-targets=host -enable-optimized
$ make install

建置 DragonEgg

如果是下載 svn 版本的 dragonegg,則 LLVM 和 GCC 也都要下載 svn 版本。
$ wget http://llvm.org/releases/2.9/dragonegg-2.9.tgz; tar xzf dragonegg-2.9.tgz
$ wget http://mirrors.kernel.org/gnu/gcc/gcc-4.5.2/gcc-4.5.2.tar.gz; tar xzf gcc-4.5.2.tar.gz
$ patch -d gcc-4.5.2 -p1 < dragonegg-2.9/gcc-patches/i386_static.diff
$ mkdir build; cd build
$ ../gcc-4.5.2/configure --prefix=$INSTALL --enable-languages=c,c++ --enable-plugin --enable-lto
$ make && make install
$ cd dragonegg-2.9;
# CPPFLAGS="-I/path/to/header/files -I/another/header/path/" make
$ GCC=/path/to/just_installed_gcc LLVM_CONFIG=/path/to/llvm-config  make

在 FreeBSD 上使用 dragonegg 請見 DragonEgg on FreeBSD目前 dragonegg 無法應用在 gcc 4.6 以後的版本。1)2)

Porting to GCC 4.6

外部連結

登录