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

时间:2016-05-19 00:00:28

标签: c++ linux gcc header-files

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

g++ -o exec Test.hpp

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

bash: ./exec: cannot execute binary file: Exec format error

这是我的来源:

#include <iostream>

class Test {

  void main() {
    std::cout << "testing" << std::endl;
  }
};

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

1 个答案:

答案 0 :(得分:5)

GCC通过扩展名识别文件的内容/类型,&#34; .hpp&#34;被认为是头文件(1)。编译头文件会生成一个二进制且不可执行的预编译头文件。

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

g++ -o exec Test.cpp
g++ -o exec -x c++ Test.cpp

(1)参见https://gcc.gnu.org/onlinedocs/gcc-3.0/gcc_3.html#SEC5&#34;对于任何给定的输入文件,文件名后缀决定了哪种编译方式:&#34;

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