[cfe-dev] Statically link libclang

Jacob Carlborg via cfe-dev cfe-dev at lists.llvm.org
Wed Jun 28 00:39:57 PDT 2017


On 2017-06-26 21:51, Jacob Carlborg via cfe-dev wrote:
> I'm trying to statically link libclang in one of my tools [1]. The
> problem I have is to get the correct order of the LLVM and libclang
> libraries when linking. On macOS it seems I can pass the libraries to
> the linker in any order but that doesn't work on Linux.
>
> I've looked at llvm-config, but that doesn't contain any information
> about libclang, only LLVM. I've tried specifying the order of the
> libraries exactly as specified in
> "tools/clang/tools/libclang/CMakeFiles/libclang.dir/link.txt" after
> invoking cmake and that works.
>
> Is there a way to get/extract the correct order of the libraries
> programmatically without having to hard code the order? Ideally
> something that works across different versions of libclang.

I came up with a workaround. Extract all LLVM and Clang libraries by 
iterating the LLVM lib directory. Pass all libraries prefixed with 
libLLVM and libclang to the linker. Use --start-group and --end-group to 
help resolve undefined symbols. These flags will instruct the linker to 
repeatedly search the libraries until no undefined symbols remain. This 
is slower but works.

-- 
/Jacob Carlborg




More information about the cfe-dev mailing list