clang 找不到標頭,但 gcc 可以

clang 找不到標頭,但 gcc 可以

使用 ubuntu 22.04,g++ 可以毫無問題地編譯我的測試程式。另一方面,clang++ 會失敗...

main.cpp:1:10: fatal error: 'iostream' file not found
#include <iostream>
         ^~~~~~~~~~
1 error generated.
#include <iostream>
using namespace std;
int main(int argc, char** argv) {
  cout << "hello world" << endl;
  return 0;
}

我還有一個 cmake/c++ 項目,可以使用 gcc 很好地編譯,但是當我重新配置它以使用 clang 時,我從 cmake 得到以下輸出。

~/C/vkf % cmc && cmake ./ -DCMAKE_BUILD_TYPE=Release -G "Ninja" && ninja
-- The C compiler identification is Clang 14.0.0
-- The CXX compiler identification is Clang 14.0.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/clang - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - failed
-- Check for working CXX compiler: /usr/bin/clang++
-- Check for working CXX compiler: /usr/bin/clang++ - broken
CMake Error at /usr/share/cmake-3.22/Modules/CMakeTestCXXCompiler.cmake:62 (message):
  The C++ compiler

    "/usr/bin/clang++"

  is not able to compile a simple test program.

  It fails with the following output:

    Change Dir: /home/david/C/vkf/CMakeFiles/CMakeTmp
    
    Run Build Command(s):/usr/bin/ninja cmTC_ef4ce && [1/2] Building CXX object CMakeFiles/cmTC_ef4ce.dir/testCXXCompiler.cxx.o
    [2/2] Linking CXX executable cmTC_ef4ce
    FAILED: cmTC_ef4ce 
    : && /usr/bin/clang++   CMakeFiles/cmTC_ef4ce.dir/testCXXCompiler.cxx.o -o cmTC_ef4ce   && :
    /usr/bin/ld: cannot find -lstdc++: No such file or directory
    clang: error: linker command failed with exit code 1 (use -v to see invocation)
    ninja: build stopped: subcommand failed.
    
    

  

  CMake will not be able to correctly generate this project.
Call Stack (most recent call first):
  CMakeLists.txt:11 (project)


-- Configuring incomplete, errors occurred!
See also "/home/david/C/vkf/CMakeFiles/CMakeOutput.log".
See also "/home/david/C/vkf/CMakeFiles/CMakeError.log".

在我的 CMakeError.log 中

/usr/bin/ld: cannot find -lstdc++: No such file or directory

我的系統配置一定發生了一些變化,因為這兩個之前都運作得很好。有誰知道如何修理它?

答案1

嘗試刪除cpp-12打包或安裝libstdc++-12-dev

答案2

我透過安裝 libc++abi-dev 解決了一個非常相似的問題:

sudo apt install libc++abi-dev

相關內容