Hi, How to compile a large project (such as Apache) by using llvm-gcc? I tried to replace CC with llvm-gcc and CFLAGS with -emit-llvm while running configure, but it didn't work. Thank you for your help. -Wink
on linux I used (I am using clang, but the idea is the same): export CC=clang export CXX=clang++ ./configure On Fri, Mar 5, 2010 at 3:24 PM, Wink zhang <winkqrzhang at gmail.com> wrote:> Hi, > > How to compile a large project (such as Apache) by using llvm-gcc? > I tried to replace CC with llvm-gcc and CFLAGS with -emit-llvm while > running configure, but it didn't work. > > Thank you for your help. > > -Wink > _______________________________________________ > LLVM Developers mailing list > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20100305/45a6d443/attachment.html>
Wink zhang wrote:> Hi, > > How to compile a large project (such as Apache) by using llvm-gcc? > I tried to replace CC with llvm-gcc and CFLAGS with -emit-llvm while > running configure, but it didn't work. >If you just want to compile the program with llvm-gcc, then Diego's instructions are fine. If, however, you want to do inter-procedural optimization or whole program analysis, then there's additional things you need to do. If you just want to use LLVM's link-time optimizations, you will need to use the libLTO library with your linker. Your linker, in turn, must be able to support plugins (like the gold linker, for example). For directions on how to set up libLTO, see http://llvm.org/docs/LinkTimeOptimization.html and http://llvm.org/docs/GoldPlugin.html. If you want to write and use your own link-time passes, then you have several options: 1) Modify the program's Makefiles to use llvm-ld to link bitcode files together. This will allow you to generate a single bitcode image. 2) Modify libLTO to run your analysis and transform passes. If you plan to work with several large applications, this is probably the way to go. SAFECode has a version of libLTO that does whole-program analysis; you can find this tool in the safecode/tools/LTO directory in the SAFECode source code (directions for getting SAFECode are at http://safecode.cs.illinois.edu/downloads.html). This approach can sometimes alleviate the need for changing the Makefiles. -- John T.> Thank you for your help. > > -Wink > _______________________________________________ > LLVM Developers mailing list > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev >
Dear John, Thanks for your reply. I want to do whole program analysis, all what I need are just the separate .bc files. What instructions should I follow? I run the configure on apache in this way: CC=clang CFLAGS=-emit-llvm ./configure while I get the error message like: checking for gcc... clang checking for C compiler default output file name... configure: error: C compiler cannot create executables Did I miss something? Thanks. -Wink John Criswell wrote:> Wink zhang wrote: >> Hi, >> >> How to compile a large project (such as Apache) by using llvm-gcc? >> I tried to replace CC with llvm-gcc and CFLAGS with -emit-llvm while >> running configure, but it didn't work. >> > If you just want to compile the program with llvm-gcc, then Diego's > instructions are fine. > > If, however, you want to do inter-procedural optimization or whole > program analysis, then there's additional things you need to do. > > If you just want to use LLVM's link-time optimizations, you will need > to use the libLTO library with your linker. Your linker, in turn, > must be able to support plugins (like the gold linker, for example). > For directions on how to set up libLTO, see > http://llvm.org/docs/LinkTimeOptimization.html and > http://llvm.org/docs/GoldPlugin.html. > > If you want to write and use your own link-time passes, then you have > several options: > > 1) Modify the program's Makefiles to use llvm-ld to link bitcode files > together. This will allow you to generate a single bitcode image. > > 2) Modify libLTO to run your analysis and transform passes. If you > plan to work with several large applications, this is probably the way > to go. SAFECode has a version of libLTO that does whole-program > analysis; you can find this tool in the safecode/tools/LTO directory > in the SAFECode source code (directions for getting SAFECode are at > http://safecode.cs.illinois.edu/downloads.html). This approach can > sometimes alleviate the need for changing the Makefiles. > > -- John T. >> Thank you for your help. >> >> -Wink >> _______________________________________________ >> LLVM Developers mailing list >> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu >> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev >> > >