[llvm-dev] Why is LTO built as a shared lib?

David Chisnall via llvm-dev llvm-dev at lists.llvm.org
Tue Jan 26 04:08:35 PST 2016


libLTO is a loadable library that linkers use to call into LLVM to do link-time optimisation.  It doesn’t make sense for it to be a static library.  I’m not 100% convinced that it makes sense for it to be built on Windows at all, because (as far as I am aware) neither Gold nor ld64 (the two current consumers of libLTO) are supported on Windows.

David

> On 26 Jan 2016, at 11:54, Antoine Pitrou via llvm-dev <llvm-dev at lists.llvm.org> wrote:
> 
> 
> Hello,
> 
> LTO is currently the only library which is always built as shared, even
> under Windows.  This actually seems to lead to failure using LLVM in
> another project under Windows, at least for me (the error message
> complains about "LTO-NOTFOUND.OBJ"). Switching it to a static library
> fixes the issue (again, at least for me under Windows).
> 
> The change was made in:
> http://lists.llvm.org/pipermail/llvm-commits/Week-of-Mon-20140623/223433.html
> 
> While it seems the original complaint was the explicit "STATIC" marker
> in the call to add_llvm_library(), the patch added an explicit "SHARED"
> marker which isn't used elsewhere.
> 
> Also, a quick look through the bin/ directory under Linux seems to
> suggest none of the executables (even llvm-lto) links dynamically
> against LTO.so.
> 
> Regards
> 
> Antoine.
> 
> 
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev



More information about the llvm-dev mailing list