請閱讀 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
$ svn co http://llvm.org/svn/llvm-project/dragonegg/trunk dragonegg $ svn co http://llvm.org/svn/llvm-project/llvm/trunk llvm
已完成。
- TYPE_DEBUG_REPRESENTATION_TYPE 3)
++++ Changelog |
++++