我一直能够通过运行以下命令使用 clang 和 clang++ 编译介子项目:
CC=clang CXX=clang++ meson setup clang-debug --buildtype=debug
我得到的输出是:
he Meson build system
Version: 1.1.0
Source dir: /home/maarten/github/psy-lib
Build dir: /home/maarten/github/psy-lib/clang-debug
Build type: native build
Project name: libpsy
Project version: 0.1
C compiler for the host machine: clang (clang 14.0.0-1ubuntu1 "Ubuntu clang version 14.0.0-1ubuntu1")
C linker for the host machine: clang ld.bfd 2.38
meson.build:1:0: ERROR: Compiler clang++ can not compile programs.
A full log can be found at /home/maarten/github/psy-lib/clang-debug/meson-logs/meson-log.txt
如果我跑步:
meson setup debug --buildtype=debug
我得到了一个工作版本,它使用 cc 和 c++ 分别编译 C 和 C++。
来自 meson-log 的 clang(++) 构建的相关部分是:
-----
Detecting compiler via: clang++ --version
compiler returned <Popen: returncode: 0 args: ['clang++', '--version']>
compiler stdout:
Ubuntu clang version 14.0.0-1ubuntu1
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
compiler stderr:
Running command: clang++ -E -dM -
-----
Detecting linker via: clang++ -Wl,--version
linker returned <Popen: returncode: 0 args: ['clang++', '-Wl,--version']>
linker stdout:
GNU ld (GNU Binutils for Ubuntu) 2.38
Copyright (C) 2022 Free Software Foundation, Inc.
This program is free software; you may redistribute it under the terms of
the GNU General Public License version 3 or (at your option) a later version.
This program has absolutely no warranty.
linker stderr:
Sanity testing C++ compiler: clang++
Is cross compiler: False.
Sanity check compiler command line: clang++ sanitycheckcpp.cc -o sanitycheckcpp.exe -D_FILE_OFFSET_BITS=64
Sanity check compile stdout:
-----
Sanity check compile stderr:
/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)
-----
meson.build:1:0: ERROR: Compiler clang++ can not compile programs.
我认为介子试图做的是编译以下程序:
class breakCCompiler;int main(void) { return 0; }
文件(sanitycheckcpp.cc)编译为:
clang++ sanitycheckcpp.cc -o sanitycheckcpp.exe -D_FILE_OFFSET_BITS=64
但是,它失败并出现以下错误:
/usr/bin/ld: cannot find -lstdc++
我不知道出了什么问题。我将不胜感激任何帮助!
简而言之,clang++ 正在寻找 libstd++ 的另一个版本。对我来说,简短且可能不是最佳的解决方案是安装另一个版本的 libstdc++
sudo apt install libstdc++-12-dev
安装 gcc 版本 12 可能会有所帮助。
我发现了类似的帖子/答案:“/usr/bin/ld: 找不到 -lstdc++: 没有这样的文件或目录”在运行 flutter linux 应用程序时
因此,如果您赞成这个答案,请确保赞成上面的答案,因为该答案更有深度。
将介子更新至版本 >= 1.2