[llvm-dev] Building LLVM with LLVM

Michael Spencer via llvm-dev llvm-dev at lists.llvm.org
Thu Sep 5 17:56:18 PDT 2019


On Thu, Sep 5, 2019 at 12:27 PM David Blaikie via llvm-dev <
llvm-dev at lists.llvm.org> wrote:

> If you removed your entire GCC installation (including the runtime
> libraries and standard library), yeah, I'm not sure that'll work out of the
> box with Clang - clang does have implementations of some pieces (libc++,
> for instance - though clang doesn't default to using it (not sure if it'll
> use it in favor if libstdc++ is missing, or if it'll fail)) I'm not sure
> all the pieces are there. (I don't know the nuance of the various libgcc_s,
> compiler-rt, etc, etc)
>

Specifically the llvm-project does not yet have a libc, so it doesn't
provide crt1.o and friends.  To use clang without any gnu facilities you'll
need a libc (musl is pretty good) and you'll need to change the driver to
use compiler-rt.  I think you can look at the freebsd driver for a platform
that uses as much llvm as possible.

- Michael Spencer


>
> Long story short - keep your GCC installation, install clang, use the
> CMAKE_C_COMPILER, CMAKE_CXX_COMPILER, etc, flags to specify that you want
> to use clang instead of gcc as your compiler.
>
> On Thu, Sep 5, 2019 at 3:16 AM Fabiano Sidler via llvm-dev <
> llvm-dev at lists.llvm.org> wrote:
>
>> Hi folks!
>>
>> I'm trying to build LLVM with LLVM on Ubuntu using the commands below.
>> Building it with the GNU stuff (cpp, gcc, g++ and binutils packages)
>> works,
>> but after removing it, moving LLVM to /usr/local and symlinking
>> /usr/bin/ld
>> to ld.lld, I'm getting the following:
>> === snip ===
>> -- The C compiler identification is Clang 8.0.1
>> -- The CXX compiler identification is Clang 8.0.1
>> -- The ASM compiler identification is Clang
>> -- Found assembler: /usr/local/bin/clang
>> -- Check for working C compiler: /usr/local/bin/clang
>> -- Check for working C compiler: /usr/local/bin/clang -- broken
>> CMake Error at /usr/share/cmake-3.5/Modules/CMakeTestCCompiler.cmake:61
>> (message):
>>   The C compiler "/usr/local/bin/clang" is not able to compile a simple
>> test
>>   program.
>>
>>   It fails with the following output:
>>
>>    Change Dir: /home/elux/build/CMakeFiles/CMakeTmp
>>
>>
>>
>>   Run Build Command:"/usr/bin/make" "cmTC_a9eab/fast"
>>
>>   /usr/bin/make -f CMakeFiles/cmTC_a9eab.dir/build.make
>>   CMakeFiles/cmTC_a9eab.dir/build
>>
>>   make[1]: Entering directory '/home/elux/build/CMakeFiles/CMakeTmp'
>>
>>   Building C object CMakeFiles/cmTC_a9eab.dir/testCCompiler.c.o
>>
>>   /usr/local/bin/clang -o CMakeFiles/cmTC_a9eab.dir/testCCompiler.c.o -c
>>   /home/elux/build/CMakeFiles/CMakeTmp/testCCompiler.c
>>
>>   Linking C executable cmTC_a9eab
>>
>>   /usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_a9eab.dir/link.txt
>>   --verbose=1
>>
>>   /usr/local/bin/clang CMakeFiles/cmTC_a9eab.dir/testCCompiler.c.o -o
>>   cmTC_a9eab
>>
>>   ld: error: cannot open crt1.o: No such file or directory
>>
>>   ld: error: cannot open crti.o: No such file or directory
>>
>>   ld: error: cannot open crtbegin.o: No such file or directory
>>
>>   ld: error: unable to find library -lgcc
>>
>>   ld: error: unable to find library -lgcc_s
>>
>>   ld: error: unable to find library -lc
>>
>>   ld: error: unable to find library -lgcc
>>
>>   ld: error: unable to find library -lgcc_s
>>
>>   ld: error: cannot open crtend.o: No such file or directory
>>
>>   ld: error: cannot open crtn.o: No such file or directory
>>
>>   clang-8: error: linker command failed with exit code 1 (use -v to see
>>   invocation)
>>
>>   CMakeFiles/cmTC_a9eab.dir/build.make:97: recipe for target 'cmTC_a9eab'
>>   failed
>>
>>   make[1]: *** [cmTC_a9eab] Error 1
>>
>>   make[1]: Leaving directory '/home/elux/build/CMakeFiles/CMakeTmp'
>>
>>   Makefile:126: recipe for target 'cmTC_a9eab/fast' failed
>>
>>   make: *** [cmTC_a9eab/fast] Error 2
>>
>>
>>
>>
>>
>>   CMake will not be able to correctly generate this project.
>> Call Stack (most recent call first):
>>   CMakeLists.txt:39 (project)
>>
>>
>> -- Configuring incomplete, errors occurred!
>> See also "/home/elux/build/CMakeFiles/CMakeOutput.log".
>> See also "/home/elux/build/CMakeFiles/CMakeError.log".
>> === snap ===
>>
>> Commands used:
>> === snip ===
>> VERSION=8.0.1
>> DESTDIR=/tmp/llvm
>> PREFIX=/usr/local
>>
>> #wget
>> https://github.com/llvm/llvm-project/releases/download/llvmorg-${VERSION}/llvm-${VERSION}.src.tar.xz
>> #wget
>> <https://github.com/llvm/llvm-project/releases/download/llvmorg-$%7BVERSION%7D/llvm-$%7BVERSION%7D.src.tar.xz#wget>
>> https://github.com/llvm/llvm-project/releases/download/llvmorg-${VERSION}/cfe-${VERSION}.src.tar.xz
>> #wget
>> <https://github.com/llvm/llvm-project/releases/download/llvmorg-$%7BVERSION%7D/cfe-$%7BVERSION%7D.src.tar.xz#wget>
>> https://github.com/llvm/llvm-project/releases/download/llvmorg-${VERSION}/libcxx-${VERSION}.src.tar.xz
>> #wget
>> <https://github.com/llvm/llvm-project/releases/download/llvmorg-$%7BVERSION%7D/libcxx-$%7BVERSION%7D.src.tar.xz#wget>
>> https://github.com/llvm/llvm-project/releases/download/llvmorg-${VERSION}/libcxxabi-${VERSION}.src.tar.xz
>> #wget
>> <https://github.com/llvm/llvm-project/releases/download/llvmorg-$%7BVERSION%7D/libcxxabi-$%7BVERSION%7D.src.tar.xz#wget>
>> https://github.com/llvm/llvm-project/releases/download/llvmorg-${VERSION}/lld-${VERSION}.src.tar.xz
>> #wget
>> <https://github.com/llvm/llvm-project/releases/download/llvmorg-$%7BVERSION%7D/lld-$%7BVERSION%7D.src.tar.xz#wget>
>> https://github.com/llvm/llvm-project/releases/download/llvmorg-${VERSION}/compiler-rt-${VERSION}.src.tar.xz
>> tar xf llvm-${VERSION}.src.tar.xz
>> tar xf cfe-${VERSION}.src.tar.xz
>> tar xf libcxx-${VERSION}.src.tar.xz
>> tar xf libcxxabi-${VERSION}.src.tar.xz
>> tar xf lld-${VERSION}.src.tar.xz
>> tar xf compiler-rt-${VERSION}.src.tar.xz
>> mv cfe-${VERSION}.src         llvm-${VERSION}.src/projects/clang
>> mv libcxx-${VERSION}.src      llvm-${VERSION}.src/projects/libcxx
>> mv libcxxabi-${VERSION}.src   llvm-${VERSION}.src/projects/libcxxabi
>> mv lld-${VERSION}.src         llvm-${VERSION}.src/projects/lld
>> mv compiler-rt-${VERSION}.src llvm-${VERSION}.src/projects/compiler-rt
>> mkdir build
>> cd build
>> cmake \
>>   -DLLVM_ENABLE_FFI=ON \
>>   -DCMAKE_BUILD_TYPE=Release \
>>   -DLLVM_ENABLE_RTTI=ON \
>>   -DLLVM_TARGETS_TO_BUILD="host" \
>>   -DBUILD_SHARED_LIBS=ON \
>>   ../llvm-${VERSION}.src
>> cmake --build .
>> cmake -DCMAKE_INSTALL_PREFIX=${DESTDIR}${PREFIX} -P cmake_install.cmake
>> === snap ===
>>
>> Any hints?
>>
>> Greetings,
>> Fabiano
>> _______________________________________________
>> 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/20190905/0fc8e73f/attachment.html>


More information about the llvm-dev mailing list