无法编译任何 c++ 文件

Can't compile any c++ file

本文关键字:c++ 文件 任何 编译      更新时间:2023-10-16

我有一个简单的文件,名为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错过了正确编译和链接所需的几个选项(包括,但不限于,链接到c++标准库);在问题的旧版本中,现在它说的是g++;
  • 但最重要的是,你的构建环境是完全破碎的(有人会说"FUBAR");/usr/include/stdio.h包含来自SDL的东西是不是正常的(与此相比,找不到它只是一个小事件);你真的应该清除和重新安装任何与gcc和有关的东西,以及C库的头文件;寻找一些libc6-dev包(或类似的)来重新安装(注意不要弄乱C库,否则您的系统可能基本上无法启动)。

你不能给一个c++文件.c (c扩展名)

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

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

3 -通过终端./nameofyourprogram执行