2016-05-19 3 views
-4

Я только что собрал свой источник с помощью г ++ с: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

Что делает 'файл./Exec' show? – 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)

Смежные вопросы