2016-05-19 119 views
-4

我只是用G ++編譯我的源:C++不能執行二進制文件

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

問題是_where_你編譯它? – user3159253

+3

'Test.hpp'的內容是什麼?將頭文件作爲主程序翻譯單元是非常不尋常的。 –

+0

'file。/ exec'顯示什麼? – Barmar

回答

5

GCC通過擴展標識文件的內容/類型,並且「.hpp」被假定爲頭文件(1)。編譯一個頭文件會產生一個預編譯頭文件,它是二進制和不可執行的。

解決的辦法是重命名爲 「的.cpp」(2)或添加 「-x C++」

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「對於任何給定的輸入文件,該文件名的後綴來確定文件什麼樣的彙編做:」

(2)或任何.CC,.cp,.CXX,的.cpp,.C++的或.C,見(1)

相關問題