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

Zachary Turner via llvm-dev llvm-dev at lists.llvm.org
Sun Jul 7 13:25:54 PDT 2019


I don’t personally develop on Mac (i use Windows), but I have an analogous
setup there where i use ninja to build and Visual Studio for editing,
debugging, etc.

What i do, and I assume it will be the same or very similar for Xcode, is
to run cmake twice, once with Ninja, and once with VS (Xcode for you), from
separate directories.  I build with the ninja one (“ninja clang” on command
line), and I change  the debugger target from the default to point directly
into my ninja directory , so VS is debugging the thing that was built with
ninja.

Hopefully that makes sense

On Sun, Jul 7, 2019 at 11:59 AM Joan Lluch <joan.lluch at icloud.com> wrote:

> Hi zturner
>
> Please, would you describe me step by step how do I get both a Xcode
> project and a Ninja setup for compiling the same?
>
> I have downloaded the Ninja-mac binary from here
> https://github.com/ninja-build/ninja/releases and have setup system path
> to it.  What’s next?
>
> Thanks
>
>
>
>
> On 7 Jul 2019, at 19:23, Zachary Turner <zturner at roblox.com> wrote:
>
> I’m not saying you can’t use Xcode, I’m just saying that instead of
> *building* in Xcode, just type “ninja” on the command line to do your build
> and then use Xcode as you normally would.
>
> I don’t think it’s the case that LLVM does not intend to support Xcode,
> just that its a community driven project, so unless someone is sufficiently
> motivated to fix whatever this problem is, it might stay this way for some
> time.  On that note, patches are certainly welcome, but if you just want to
> unblock yourself, the easiest way is going to be to type a command on the
> command line to do your build instead of pressing a button in the UI (and
> you could still use the UI for everything else)
>
> On Sun, Jul 7, 2019 at 9:40 AM Joan Lluch <joan.lluch at icloud.com> wrote:
>
>>
>> Hi zturner,
>>
>> I understand what you say and I have been suggested this a couple of
>> times, but I really don’t want to make the switch to ninja. I’m a retired
>> senior software developer and I just use LLVM for a custom backend that I
>> have already almost completed in LLVM 7.0. I’m not really into LLVM-project
>> development, and Xcode is both familiar and fast enough for incremental
>> builds of ‘llc’ or ‘clang’ alone including my target backend, (or it used
>> to be in 7.0). It’s just the right tool for me.
>>
>> On the other hand I think that in case there’s no intention to fully
>> support Xcode in the future, then it should be removed from de doc
>> descriptions to prevent deceptive information. Otherwise, at least major
>> issues like this one, should be taken care of.
>>
>> John
>>
>>
>>
>> On 7 Jul 2019, at 17:08, Zachary Turner <zturner at roblox.com> wrote:
>>
>> Try using ninja generator, most people do not use Xcode for building, so
>> since it lesser-used, it also lesser tested.  Note that it’s perfectly
>> possible to use Xcode for code browsing, debugging, editing while using
>> ninja for building, which is what I think most people do
>>
>> On Sun, Jul 7, 2019 at 4:20 AM Joan Lluch via llvm-dev <
>> llvm-dev at lists.llvm.org> wrote:
>>
>>> I also filled a bug report. I think this is actually a bug
>>>
>>> https://bugs.llvm.org/show_bug.cgi?id=42528
>>>
>>> John
>>>
>>>
>>> On 7 Jul 2019, at 09:27, Joan Lluch via llvm-dev <
>>> llvm-dev at lists.llvm.org> wrote:
>>>
>>> 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, 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
>>>
>>>
>>>
>>> _______________________________________________
>>> LLVM Developers mailing list
>>> llvm-dev at lists.llvm.org
>>> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>>>
>>>
>>> _______________________________________________
>>> LLVM Developers mailing list
>>> llvm-dev at lists.llvm.org
>>> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20190707/524254fe/attachment.html>


More information about the llvm-dev mailing list