[llvm-dev] Linker errors after installing/compiling LLVM/CLANG

Joan Lluch via llvm-dev llvm-dev at lists.llvm.org
Sun Jul 7 00:27:20 PDT 2019


I understand that a difference between ninja and xcode is they use a different way to determine code dependencies. So to my understanding xcode needs dependencies to be properly created whereas ninja just doesn’t care. Maybe this is why ninja is able to find what it needs for the compilation to succeed, but not xcode.

So I have now looked at the CMakeLists.txt files and found that all the missing libraries are defined in files under the ‘clang’ directory. 

The llvm_project clone has the following structure:

llvm-project
	llvm
	clang
	(others)

Everything  under ‘llvm’ is properly compiled with no issues, however what is under ‘clang’ fails to compile (with linker errors) even if -DLLVM_ENABLE_PROJECTS=“clang” is specified.

I suspect now that there may be some kind of bug in the llvm project that prevents this to work properly, or maybe something else needs to be done to get clang compiled on xcode. I also suspect that this may pass unnoticed when using ninja because it simply uses it’s own way to find dependencies (but I don’t really know anything about ninja). 

Maybe this may help somebody to figure out what could be happening and hopefully help me to narrow the issue? I honestly am totally lost on what to try next. This is kind of ridiculous.

Thanks


> On 6 Jul 2019, at 23:49, Neil Nelson <nnelson at infowest.com> wrote:
> 
> Joan,
> 
> Just completed a good clang compile built from a mostly vanilla Xubuntu 19.04 VM, installed the llvm-needed Ubuntu packages, downloaded a new copy of llvm using the noted llvm install page, configured using
> 
> cmake -G Ninja -DLLVM_ENABLE_PROJECTS="clang" -DLLVM_USE_LINKER=lld -DCMAKE_BUILD_TYPE="Release" -DCMAKE_INSTALL_PREFIX=/home/nnelson/Documents/llvm/install ../llvm &> cmake.log
> 
> which is primarily different from yours where I am using a 'Release' build to avoid the much larger memory and disk usage of a 'Debug' build. The 'ninja install' command put everything in llvm/install as expected including clang. I look through cmake.log to see if there are errors that need to be corrected.
> 
> My differences appear to be Xubuntu, the packages, ninja, and the cmake line.
> 
> On Linux I can use
> 
> ninja &> ninja_compile.log
> 
> to look at the compile history and see if something went wrong.
> 
> Neil
> 
> On 7/6/19 12:00 AM, Joan Lluch wrote:
>> Hi Nelson,
>> 
>> Thanks for your reply. 
>> 
>> The “build/Debug/lib” and "build/Release/lib” directories is where all the libraries go. Similarly, the executables go to “build/Debug/bin” and “build/Release/bin” before they are moved to the install directory. This is expected and normal. However, the problem is that a small number of libraries (exactly 20 in total) are not created at all for the LLVM 9.0 version that I cloned from gitHub. These libraries are in fact not created anywhere!.
>> 
>> I still have LLVM 7.0 installed in my computer and the libraries for that version are all there in the right places under the LLMV 7.0 directory, but in that case I installed it all in a different way as I said, loosing the benefits of git.
>> 
>> I forgot to mention that “llc” alone compiles and links correctly without any issue. The problem is only when I try to get ‘clang’ compiled.
>> 
>> You mention that you enabled a lot of projects:  "clang;clang-tools-extra;compiler-rt;debuginfo-tests;libclc;libcxx;libcxxabi;libunwind;lld;lldb;llvm;openmp;parallel-libs;polly;pstl”. I only really need the basic installation of “clang”, and I do not need any testing tools because all I want is to add my custom target to it. I also tried "clang;libclc;libcxx” but the problem with the missing libraries is exactly the same.
>> 
>> Just as a matter of information: I successfully implemented a custom target backend, and have it almost finished and running perfectly on LLVM 7.0. Now, I just want to move it to LLVM 9.0, but got stuck in what is supposed to be the easiest part which is just compiling it (??), but I do not understand why it doesn’t compile!
>> 
>> Any ideas?
>> 
>> Joan
>> 
>>> John, I compiled and installed to /usr/local all the projects under llvm except llgo yesterday. The three files you noted are in
>>> ../llvm-project/build/lib
>>> I do not have a llvm-project/build/Debug directory.
>>> Xubuntu 19.04. llvm downloaded from github on 6/18 using instructions from the page you note.
>>> cmake -G Ninja -DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra;compiler-rt;debuginfo-tests;libclc;libcxx;libcxxabi;libunwind;lld;lldb;llvm;openmp;parallel-libs;polly;pstl" -DLLVM_USE_LINKER=lld -DCMAKE_BUILD_TYPE="Release" ../llvm
>>> Installed additional packages as needed.
>>> Neil
>>> On 7/5/19 6:46 AM, Joan Lluch via llvm-dev wrote:
>>>> Hi All,
>>>> 
>>>> I am looking for the best way to install LLVM+clang,  but I do not seem to find a way that works for me.
>>>> 
>>>> I followed the steps in this document Getting Started with the LLVM System — LLVM 9 documentation <https://llvm.org/docs/GettingStarted.html> except that I created the following folder structure as I do not want clang and llc to go to /usr/local
>>>> 
>>>> LLVM-9
>>>>    llvm-project  (cloned from github)
>>>>    install
>>>> 
>>>> I ran the following command line from the build directory in llvm-project as described in the doc, but added the DLLVM_OPTIMIZED_TABLEGEN=On variable :
>>>> 
>>>> cmake -G Xcode -DLLVM_ENABLE_PROJECTS=clang -DCMAKE_INSTALL_PREFIX=/Users/joan/LLVM-9/install -DLLVM_OPTIMIZED_TABLEGEN=On ../llvm
>>>> 
>>>> The cmake command above seems to work ok, but after that, when I compile the “install” or “build_all” schemes I get a lot of linker errors. Such as these ones and more:
>>>> 
>>>> clang: error: no such file or directory: '/Users/joan/LLVM-9/llvm-project/build/Debug/lib/libclangAST.a'
>>>> clang: error: no such file or directory: '/Users/joan/LLVM-9/llvm-project/build/Debug/lib/libclangLex.a'
>>>> clang: error: no such file or directory: '/Users/joan/LLVM-9/llvm-project/build/Debug/lib/libclangBasic.a'
>>>> 
>>>> Up until recently, I have worked with LLVM 7.0 and all what I did was downloading both llvm and clang from llvm.org <http://llvm.org/>, copied clang into llvm/tools, and ran the cmake application (not command line).  That kind of worked except for some minor glitches but of course I didn’t get the benefits of git.
>>>> 
>>>> So what am I doing wrong now? Why I’m getting such linker errors?
>>>> 
>>>> It seems that a few required libraries are not created, but I do not understand why. Any ideas?
>>>> 
>>>> Thanks,
>>>> 
>>>> John
>> 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20190707/3df644ac/attachment-0001.html>


More information about the llvm-dev mailing list