Hello, I've been trying to build some normal linux applications with clang and I keep running into a snag in configure scripts. Perhaps these scripts are not written very well, but the current clang behavior seems strange. When I run clang with the -emit-llvm option, it still uses /usr/bin/ld as the linker which fails to compile llvm bitcode on linux (though it works on mac). Here's a simple example: $ cat > test.c int main(void) { return 0; } $ clang -emit-llvm test.c /tmp/cc-pDfs56.o: file not recognized: File format not recognized clang: error: linker command failed with exit code 1 (use -v to see invocation) $ clang -emit-llvm test.c -c $ It seems to me that clang should call llvm-ld when it generates llvm code and ld otherwise, but maybe there's something that I have configured incorrectly. What is the appropriate way to address this? Thanks. -- gregory malecha -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20110628/d84efb0c/attachment.html>
On 11-06-28 10:45 PM, Gregory Malecha wrote:> Hello, > > I've been trying to build some normal linux applications with clang and I keep running into a snag in configure scripts. Perhaps these scripts are not written very well, but the current clang behavior seems strange. When I run clang with the -emit-llvm option, it still uses /usr/bin/ld as the linker which fails to compile llvm bitcode on linux (though it works on mac). Here's a simple example: > > $ cat > test.c > int main(void) { return 0; } > $ clang -emit-llvm test.c > /tmp/cc-pDfs56.o: file not recognized: File format not recognized > clang: error: linker command failed with exit code 1 (use -v to see invocation) > $ clang -emit-llvm test.c -c > $ > > It seems to me that clang should call llvm-ld when it generates llvm code and ld otherwise, but maybe there's something that I have configured incorrectly. What is the appropriate way to address this?llvm-ld is not a full replacement for a system ld. If you want to do LTO (which is why I assume you are using -emit-llvm), you should use a linker that support it. Gold support plugins and can use the LLVM one. Recently gnu ld implemented the same interface, but I haven't tested it. http://llvm.org/docs/GoldPlugin.html> Thanks.Cheers, Rafael
Hi Rafael, I've tried the LTO options with dragonegg, but I haven't had any luck getting it to work, I'm not sure if it is related to my installation of gold or my gcc configuration. I'm really interested in getting the resulting program as bitcode though. Will LTO do that for me? What I'm trying to do is build a bitcode version of libc that I can combine with a program and analyze/optimize the resulting program. 2011/6/28 Rafael Ávila de Espíndola <rafael.espindola at gmail.com>> On 11-06-28 10:45 PM, Gregory Malecha wrote: > > Hello, > > > > I've been trying to build some normal linux applications with clang and I > keep running into a snag in configure scripts. Perhaps these scripts are not > written very well, but the current clang behavior seems strange. When I run > clang with the -emit-llvm option, it still uses /usr/bin/ld as the linker > which fails to compile llvm bitcode on linux (though it works on mac). > Here's a simple example: > > > > $ cat > test.c > > int main(void) { return 0; } > > $ clang -emit-llvm test.c > > /tmp/cc-pDfs56.o: file not recognized: File format not recognized > > clang: error: linker command failed with exit code 1 (use -v to see > invocation) > > $ clang -emit-llvm test.c -c > > $ > > > > It seems to me that clang should call llvm-ld when it generates llvm code > and ld otherwise, but maybe there's something that I have configured > incorrectly. What is the appropriate way to address this? > > llvm-ld is not a full replacement for a system ld. If you want to do LTO > (which is why I assume you > are using -emit-llvm), you should use a linker that support it. Gold > support plugins and can > use the LLVM one. Recently gnu ld implemented the same interface, but I > haven't tested it. > > http://llvm.org/docs/GoldPlugin.html > > > Thanks. > > Cheers, > Rafael > _______________________________________________ > LLVM Developers mailing list > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev >-- gregory malecha -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20110629/44db9eb7/attachment.html>