无法编译任何c ++文件

时间:2016-10-27 17:46:53

标签: c++ g++ sdl

我有一个名为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文件。

2 个答案:

答案 0 :(得分:3)

存在多个问题:

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

答案 1 :(得分:1)

您无法将.c(c扩展名)提供给c ++文件。

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

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

3 - 通过您的终端./nameofyourprogram

执行