-
-
Notifications
You must be signed in to change notification settings - Fork 2.8k
Troubleshooting Build Issues
If you get one of these:
undefined reference to `_ZNK4llvm17SubtargetFeatures9getStringB5cxx11Ev'
undefined reference to `llvm::SubtargetFeatures::getString() const'
This is because of C++'s Dual ABI. Most likely LLVM was compiled with one compiler while Zig was compiled with a different one, for example GCC vs clang.
LLVM, Clang, and Zig must all be compiled with the same C++ compiler.
The Clang package distributed via official Pacman sources isn't built with static libraries,
therefore, it is not possible to statically link against individual Clang libs. Instead, one
should link against the shared lib libclang-cpp.so
. Thus, when building on Archlinux, you
need to pass ZIG_PREFER_CLANG_CPP_DYLIB
flag set to true like so:
cmake .. -DZIG_PREFER_CLANG_CPP_DYLIB=true
Like Arch Linux' clang package, Gentoo's Clang is built without static libraries, so you'll need to pass -DZIG_PREFER_CLANG_CPP_DYLIB=true
to cmake.
If you get the message : CommandLine Error: Option 'mc-relax-all' registered more than once!
, you're affected by the issue discussed in https://reviews.llvm.org/D75579. The fix has not (yet?) been included in clang 10.0.1. As a workaround, you can build clang with the line add_clang_subdirectory(handle-llvm)
removed from clang/tools/clang-fuzzer/CMakeLists.txt.
Additionally, you'll need lld's .a and .h files, which aren't installed by Gentoo's lld ebuild, so you'll need to modify your lld ebuild file to not delete them.
Starting with version 32, Fedora will no longer ship individual component libraries in the clang-libs
package instead requiring users to link against libclang-cpp.so
. Thus when building on Fedora version 32 or greater you'll need to pass -DZIG_PREFER_CLANG_CPP_DYLIB=true
to cmake.
The LLVM repositories/packages are listed at https://apt.llvm.org/. The following packages that are not listed must be installed: liblld-12-dev
, libclang-12-dev
(as well as at least libllvm12
from the listed packages).
Log on to one of the Community spaces and ask for help.