本人使用Linux Mint,基于的是Ubuntu 22.04 。
我用下面的命令安装了clang
sudo apt install clang
但是发现编译会有问题。比如在使用 clang++ 编译hello world程序时,会出现:fatal error: 'iostream' file not found
。执行clang -v
,会发现这样的输出:
************:~$ clang -v
Ubuntu clang version 14.0.0-1ubuntu1
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/11
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/12
Selected GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/12
Candidate multilib: .;@m64
Selected multilib: .;@m64
解释一下,clang 会有这样一个行为:如果电脑安装了有gcc,clang会默认使用gcc最新版本的库。
其中 Selected GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/12
表明,他在找到了12版本的库了。此时我的g++-12尚未安装,g++版本仍为包管理器的默认版本的g++-11。于是此文件夹中就没用相应的c++库。为什么会有12这个文件夹呢?因为我之前安装了gcc-12。这个12文件夹只有gcc-12相关文件。因此我的首要目标就是,安装g++-12。
sudo apt install g++-12
后面就可以正常运行了。所以,一定要保证gcc和g++的版本一致。不能看默认版本,应该看最新版本。使用gcc-xx -v
或者g++-xx -v
来查看是不是安装了最新的版本。