CMake "clang++ is not able compile a simple test program" (Fedora 20)

12,402

You need the development libraries and headers for C++ library, try

yum install libstdc++-devel
Share:
12,402
Jacob Wang
Author by

Jacob Wang

Updated on June 28, 2022

Comments

  • Jacob Wang
    Jacob Wang almost 2 years

    So I tried to install clang + cmake to compile a simple C++ program and I'm getting the following error:

    -- The C compiler identification is GNU 4.8.3
    -- The CXX compiler identification is Clang 3.5.0
    -- Check for working C compiler: /usr/bin/cc
    -- Check for working C compiler: /usr/bin/cc -- works
    -- Detecting C compiler ABI info
    -- Detecting C compiler ABI info - done
    -- Check for working CXX compiler: /usr/local/bin/clang++
    -- Check for working CXX compiler: /usr/local/bin/clang++ -- broken
    CMake Error at /usr/share/cmake/Modules/CMakeTestCXXCompiler.cmake:54 (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/jtcwang/tmp/CMake/CMake/CMakeFiles/CMakeTmp
    
    
    
      Run Build Command:/usr/bin/gmake "cmTryCompileExec697180971/fast"
    
      /usr/bin/gmake -f CMakeFiles/cmTryCompileExec697180971.dir/build.make
      CMakeFiles/cmTryCompileExec697180971.dir/build
    
      gmake[1]: Entering directory
      `/home/jtcwang/tmp/CMake/CMake/CMakeFiles/CMakeTmp'
    
      /usr/bin/cmake -E cmake_progress_report
      /home/jtcwang/tmp/CMake/CMake/CMakeFiles/CMakeTmp/CMakeFiles 1
    
      Building CXX object
      CMakeFiles/cmTryCompileExec697180971.dir/testCXXCompiler.cxx.o
    
      /usr/local/bin/clang++ -o
      CMakeFiles/cmTryCompileExec697180971.dir/testCXXCompiler.cxx.o -c
      /home/jtcwang/tmp/CMake/CMake/CMakeFiles/CMakeTmp/testCXXCompiler.cxx
    
      Linking CXX executable cmTryCompileExec697180971
    
      /usr/bin/cmake -E cmake_link_script
      CMakeFiles/cmTryCompileExec697180971.dir/link.txt --verbose=1
    
      /usr/local/bin/clang++
      CMakeFiles/cmTryCompileExec697180971.dir/testCXXCompiler.cxx.o -o
      cmTryCompileExec697180971 -rdynamic
    
      /usr/bin/ld: cannot find -lstdc++
    
      clang: error: linker command failed with exit code 1 (use -v to see
      invocation)
    
      gmake[1]: Leaving directory
      `/home/jtcwang/tmp/CMake/CMake/CMakeFiles/CMakeTmp'
    
      gmake[1]: *** [cmTryCompileExec697180971] Error 1
    
      gmake: *** [cmTryCompileExec697180971/fast] Error 2
    

    It's not even compiling my program because it fails to compile a test program.

    Looks like the important line is here:

     /usr/bin/ld: cannot find -lstdc++
    

    However, I have checked that libstdc++ is installed and up to date, so at this point I'm quite lost.

    Other things I've tried:

    1. Using prebuilt binaries instead of sudo yum install clang
    2. remove and reinstall
    3. Tried clang++ hello.cpp (hello world program). It says <iostreams> is not found. Is clang missing a standard library? EDIT: changing to <iostream> gives me the same linker error above.

    I'm not familiar with the clang, cmake and C++ scene in general, so I'd appreciate any pointers. Thanks!