我刚用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,它不是虚拟机。 有什么建议吗?
答案 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)