[cfe-dev] Missing libclang_rt.* in self-built clang/llvm 3.8.0 ?

Paul Smith via cfe-dev cfe-dev at lists.llvm.org
Tue Mar 15 10:40:57 PDT 2016


Hi all; I'm building a local copy of Clang/LLVM 3.8.0 on my GNU/Linux
system.  I also have built my own GCC 5.3.0 / binutils 2.26 (with gold)
and I've configured clang to find that instance of GCC rather than the
system GCC by using GCC_INSTALL_PREFIX with cmake.  I'm starting with
the source tarballs downloaded from llvm.org/releases: clang, cfe, and
clang-tools-extra, and I drop the latter two into the build tree as
described.

After the build I used "make install" to install it.

The build works, and compiling my code (C++) works and a basic test
suite passes and using "clang++ -v" I see that the right libraries and
linker etc. are being used.  Yay!

However, when I try to build with ASAN things don't go so well.
Compilation succeeds but linking fails:

  /opt/clang/current/bin/clang++ -std=c++11 -fsanitize=address <...>.o  \
        -o myTest -rdynamic  -latomic -luuid -lrt -lpthread -lnsl -ldl
  /gcc/generic/lib/gcc/x86_64-generic-linux-gnu/5.3.0/../../../../x86_64-generic-linux-gnu/bin/ld: error: cannot open /opt/clang/clang-3.8/bin/../lib64/clang/3.8.0/lib/linux/libclang_rt.asan-x86_64.a: No such file or directory
  /gcc/generic/lib/gcc/x86_64-generic-linux-gnu/5.3.0/../../../../x86_64-generic-linux-gnu/bin/ld: error: cannot open /opt/clang/clang-3.8/bin/../lib64/clang/3.8.0/lib/linux/libclang_rt.asan_cxx-x86_64.a: No such file or directory
  test/EnvironmentTest.cpp:78: error: undefined reference to '__asan_option_detect_stack_use_after_return'
  test/EnvironmentTest.cpp:78: error: undefined reference to '__asan_stack_malloc_2'
  GTest/include/gtest/gtest.h:288: error: undefined reference to '__asan_report_load1'
  /gcc/generic/lib/gcc/x86_64-generic-linux-gnu/5.3.0/../../../../x86_64-generic-linux-gnu/include/c++/5.3.0/bits/atomic_base.h:304: error: undefined reference to '__asan_report_store4'
    ... etc...

If I do a find -name '*.asan*.a' or 'libclang_rt*' in both the original
build directory and the install directory, nothing shows up.  In fact
there's no "lib" directory at all under lib64/clang/3.8.0; only an
include directory.

Clearly I messed something up.  Any ideas on what do look for?

Here's the cmake command I used to set up the configuration:

cmake ../llvm-3.8.0.src -DCMAKE_C_COMPILER=x86_64-tools-linux-gnu-gcc \
  -DCMAKE_CXX_COMPILER=x86_64-tools-linux-gnu-g++ \
  -DCMAKE_C_FLAGS='-g -O2 -static-libgcc' \
  -DCMAKE_CXX_FLAGS=-g -O2 -static-libgcc -static-libstdc++' \
  -G 'Unix Makefiles' -DCMAKE_INSTALL_PREFIX=/work/clang/dist \
  -DCMAKE_BUILD_TYPE=Release -DLLVM_BUILD_EXAMPLES=OFF \
  -DCMAKE_MAKE_PROGRAM=make -DGCC_INSTALL_PREFIX=/gcc/x86_64-linux/cc/generic \
  -DLLVM_HOST_TRIPLE=x86_64-generic-linux-gnu -DLLVM_INCLUDE_TESTS=OFF \
  -DCMAKE_PREFIX_PATH=/gcc/x86_64-linux/sysroot/tools/usr \
  -DLLVM_TARGETS_TO_BUILD=X86 -DLLVM_LIBDIR_SUFFIX=64 -DLLVM_INCLUDE_EXAMPLES=OFF


More information about the cfe-dev mailing list