无法编译任何 C++ 文件

Can't compile any c++ file

我有这个简单的文件,叫做 lol.c

#include <iostream> 

using namespace std;

int main() {
    return(0);
}

在终端中,我输入 g++ lol.c

这是输出:

In file included from /usr/include/wchar.h:36:0,
             from /usr/include/c++/4.9/cwchar:44,
             from /usr/include/c++/4.9/bits/postypes.h:40,
             from /usr/include/c++/4.9/iosfwd:40,
             from /usr/include/c++/4.9/ios:38,
             from /usr/include/c++/4.9/ostream:38,
             from /usr/include/c++/4.9/iostream:39,
             from lol.c:1:



/usr/include/stdio.h:30:22: fatal error: SDL_main.h: File o directory non esistente
 #include "SDL_main.h"
                      ^
compilation terminated.

我不知道问题是否出在 SDL 上,但是当我尝试 运行 ../configure 安装它时,我得到了这个:

configure: error: cannot run C compiled programs.

See `config.log' for more details

如果需要这个,我也可以放config.log文件。

存在多个问题:

  • 您为 C++ 源文件提供了 .c 扩展名;这是错误的,C++ 文件应该有一个 .cpp(或 .cxx.C.c++,最后两个有点不受欢迎)扩展名,否则编译器可能会尝试将其编译为 C 代码;
  • 您正在调用 gcc 而不是 g++;这也是错误的,在 C++ 文件上调用 gcc 会错过编译和 link 正确所需的几个选项(包括但不限于针对 C++ 标准库的 linking);在这个问题的旧版本中,现在它说 g++;
  • 但最重要的是,您的构建环境已完全损坏(有人会说 "FUBAR"); /usr/include/stdio.h 包含来自 SDL 的东西是正常的(与此相比,无法找到它只是一个小事件);您真的应该清除并重新安装与 gcc 和 C 库的 headers 相关的所有内容;寻找一些 libc6-dev 包(或类似的)来重新安装(注意不要弄乱 C 库本身,否则您的系统可能会变得无法启动)。

您不能将 .c(c 扩展名)赋予 c++ 文件。

1 - 将其更改为 .cpp(c++ 扩展,lol.cpp)

2 - 您必须为 g++ 提供选项(在您的情况下使用 -o 来创建可执行文件)g++ lol.cpp -o nameofyourprogram

3 - 通过您的终端执行 ./nameofyourprogram