我试图用Clang在Fedora 20上编译简单的hello world,我得到以下输出:
d.cpp:1:10:致命错误:找不到'iostream'文件
#include <iostream>
我不知道如何解决它.
这个问题已被问过并回答过很多次,但似乎没有一个答案对我有用。
我一直在尝试clangd在 nvim lsp 中进行设置。我使用bear来生成compile_commands.json,但 clangd 仍然给我错误,告诉我它找不到标准库头。这是一个最小的例子:
主要.cpp:
#include <iostream>
using namespace std;
int main(){
  cout << "hello clangd";
  return 0;
}
然后我运行: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"
  }
]
我还尝试使用 cmake 标志进行编译来生成compile_commands.json,但我遇到了同样的问题。我可以获取该文件,但语言服务器仍然无法正常工作。
我已经能够将 clang 与vim-pio 一起使用,所以看起来它没有损坏。我缺少什么。
编辑:顺便说一句,我在 ubuntu 上
我是 C++ 的新手,我一直在一个又一个头痛,所以如果这非常简单并且我就是那么愚蠢,请原谅我......
我有一个最终应该在 Linux 中编译和运行的项目。不幸的是,在我的 C++ 开发环境出现很多问题(仍未解决)之后,我放弃了在 Linux 中进行开发的尝试,转而使用了 Windows Visual Studio 2017。我的希望是让我的代码在 Windows 中运行,然后,因为 C++ 应该是一个可移植语言,它应该只需要在 Linux 中进行最少的更改即可工作。
一天左右,Visual Studio 似乎在工作。我可以编写代码,点击“编译”,然后就像魔法一样运行。我把几个类放在一起构建了一个有向无环图,使用了哈希表的标准库,然后我尝试创建了一个套接字......
Windows 和 Linux 使用不同的套接字库(<sys/socket.h>vs <winsock.h>),所以我需要某种方法来抽象差异,我更喜欢一个完善的标准。在谷歌上搜索我发现Boost 库似乎符合我的需求......那是一切都变得糟糕的时候。
因为这个项目将在各种平台和 IDE 上开发(有些人使用 Windows + Visual Studio,有些人使用 Mac + Eclipse,其他人使用 Linux + VIM),所以我选择将它作为一个 CMake 项目。经过几个小时的阅读、学习和研究,似乎 CMake 应该给我我想要的东西(方便且可重复的跨平台构建,几乎没有或没有依赖性问题)
我的源代码(直接来自Windows 上的Boost 入门指南)如下:
CMakeProject2.cpp
#include <boost/lambda/lambda.hpp>
#include <iostream>
#include <iterator>
#include <algorithm>
int main()
{
    using namespace …如何查询clang/clang ++的默认包含路径?我正在尝试使用自定义构建的clang编译器(支持OpenMP的编译器),但它似乎找不到STL库:
/usr/local/bin/clang++ hello.cpp 
hello.cpp:1:10: fatal error: 'iostream' file not found
#include <iostream>
     ^
1 error generated.
通过使用IDE,反向跟踪#include iostream,最后使用-isystem选项,我在OSX 10.9中编译了简单的helloworld应用程序:
/usr/local/bin/clang++ -isystem /Library/Developer/CommandLineTools/usr/lib/c++/v1 hello.cpp
谢谢你的帮助!