[LLVMdev] clang -emit-llvm uses system ld

Rafael Ávila de Espíndola rafael.espindola at gmail.com
Tue Jun 28 22:23:57 PDT 2011


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



More information about the llvm-dev mailing list