相关疑难解决方法(0)

什么时候需要使用标志-stdlib = libstdc ++?

什么时候需要使用-stdlib=libstdc++gcc编译时使用编译器和链接器的标志?

编译器是否自动使用libstdc ++?

我在Ubuntu 13.10上使用gcc4.8.2,我想使用c ++ 11标准.我已经传递-std=c++11给了编译器.

c++ gcc std libstdc++ c++11

48
推荐指数
3
解决办法
7万
查看次数

clangd 无法识别标准标头

这个问题已被问过并回答过很多次,但似乎没有一个答案对我有用。

我一直在尝试clangd在 nvim lsp 中进行设置。我使用bear来生成compile_commands.json,但 clangd 仍然给我错误,告诉我它找不到标准库头。这是一个最小的例子:

主要.cpp:

#include <iostream>
using namespace std;

int main(){
  cout << "hello clangd";
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

然后我运行:bear -- g++ main.cpp,它编译并创建一个compile_commands.json包含以下内容的文件:

[
  {
    "arguments": [
      "/usr/bin/g++",
      "-c",
      "main.cpp"
    ],
    "directory": "/home/xxx/tmp/hello_clangd",
    "file": "/home/xxx/tmp/hello_clangd/main.cpp"
  }
]
Run Code Online (Sandbox Code Playgroud)

我还尝试使用 cmake 标志进行编译来生成compile_commands.json,但我遇到了同样的问题。我可以获取该文件,但语言服务器仍然无法正常工作。

我已经能够将 clang 与vim-pio 一起使用,所以看起来它没有损坏。我缺少什么。

编辑:顺便说一句,我在 ubuntu 上

c++ liskov-substitution-principle g++ neovim clangd

12
推荐指数
1
解决办法
6985
查看次数

在 Clang++ 中定位 iostream:致命错误:找不到“iostream”文件

我编写了以下简单的 C++ 程序:

#include <iostream>

using namespace std;

int main() {
    cout << "Hello, World" << endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

当我用 g++ 编译它时,它工作得很好。当我尝试使用 Clang++ 进行编译时,出现以下错误:

main.cpp:1:10: fatal error: 'iostream' file not found
#include <iostream>
         ^~~~~~~~~~
1 error generated.
Run Code Online (Sandbox Code Playgroud)

使用-v参数运行,我看到以下内容:

ignoring nonexistent directory "/usr/bin/../lib/gcc/x86_64-linux-gnu/8/../../../../include/c++/x86_64-linux-gnu"
ignoring nonexistent directory "/usr/bin/../lib/gcc/x86_64-linux-gnu/8/../../../../include/c++/backward"
ignoring nonexistent directory "/include"
ignoring duplicate directory "/usr/include/clang/6.0.0/include"
#include "..." search starts here:
#include <...> search starts here:
 /usr/bin/../lib/gcc/x86_64-linux-gnu/8/../../../../include/c++
 /usr/include/clang/6.0.0/include
 /usr/local/include
 /usr/include/x86_64-linux-gnu
 /usr/include
End of search list.
Run Code Online (Sandbox Code Playgroud)

分别查看这些文件夹,我发现在/usr/bin/../lib/gcc/x86_64-linux-gnu/8/../../../../include/c++(或更简洁地说,在/usr/include/c++ …

c++ linux clang clang++

10
推荐指数
4
解决办法
9531
查看次数

Clang++ 看不到 libc++

我刚刚从https://github.com/llvm/llvm-project.git安装了 clang++ 和 libc++ 。尝试运行时:

clang main.cpp -stdlib=libc++ -lc++abi
Run Code Online (Sandbox Code Playgroud)

其中main.cpp

#include <iostream>

int main() {
    std::cout << "main>" << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

我收到一个错误:

main.cpp:1:10: fatal error: 'iostream' file not found
#include <iostream>
Run Code Online (Sandbox Code Playgroud)

-v 选项的输出:

clang version 9.0.0 (https://github.com/llvm/llvm-project.git 40046bc8430f0b90d76cef9e6cc62ccc2abcb0b0)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
Found candidate GCC installation: /usr/bin/../lib/gcc/i686-linux-gnu/6
Found candidate GCC installation: /usr/bin/../lib/gcc/i686-linux-gnu/6.3.0
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/6
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/6.3.0
Found candidate GCC installation: /usr/lib/gcc/i686-linux-gnu/6
Found candidate GCC installation: /usr/lib/gcc/i686-linux-gnu/6.3.0
Found …
Run Code Online (Sandbox Code Playgroud)

c++ clang++

5
推荐指数
1
解决办法
1659
查看次数

配置c ++标准库的clang-check

我试图运行Ale作为我的linter,然后使用clang-check来lint我的代码.

$ clang-check FeatureManager.h
Error while trying to load a compilation database:
Could not auto-detect compilation database for file "FeatureManager.h"
No compilation database found in /home/babbleshack/ or any parent directory
json-compilation-database: Error while opening JSON database: No such file or directory
Running without flags.
/home/babbleshack/FeatureManager.h:6:10: fatal error: 'unordered_map' file not found
#include <unordered_map>
         ^~~~~~~~~~~~~~~
1 error generated.
Error while processing /home/babbleshack/FeatureManager.h.
Run Code Online (Sandbox Code Playgroud)

而使用clang ++进行编译只会返回一个警告.

$ clang++ -std=c++11 -Wall FeatureManager.cxx FeatureManager.h
clang-5.0: warning: treating 'c-header' input as 'c++-header' when in C++ mode, …
Run Code Online (Sandbox Code Playgroud)

c++11 clang++

1
推荐指数
1
解决办法
1668
查看次数