C++无法执行二进制文件

Chi*_*ina -4 c++ linux gcc header-files

我刚用g ++编译了我的源代码:

g++ -o exec Test.hpp
Run Code Online (Sandbox Code Playgroud)

这不会生成可执行文件,即使我使用chmod使其可执行,我也会收到此错误.

bash: ./exec: cannot execute binary file: Exec format error
Run Code Online (Sandbox Code Playgroud)

这是我的来源:

#include <iostream>

class Test {

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

我正在使用Manjaro,它不是虚拟机.有什么建议吗?

kfs*_*one 5

GCC通过扩展名识别文件的内容/类型,并且".hpp"被假定为头文件(1).编译头文件会生成一个二进制和不可执行的预编译头文件.

解决方案是将文件重命名为".cpp"(2)或添加"-x c ++"

g++ -o exec Test.cpp
g++ -o exec -x c++ Test.cpp
Run Code Online (Sandbox Code Playgroud)

(1)参见https://gcc.gnu.org/onlinedocs/gcc-3.0/gcc_3.html#SEC5 "对于任何给定的输入文件,文件名后缀确定完成了哪种编译:"

(2)或.cc,.cp,.cxx,.cpp,.c ++或.C中的任何一个,参见(1)