2012-04-01 2 views
0

Создание простого приложения hello world в C++, но оно не будет компилироваться. У меня есть папка C:\WiiGames\e3\ с файлами main.cpp и Makefile. Мой Makefile является:MinGW не компилируется, ошибка 1

build: main.cpp 
    C:/MinGW/bin/g++.exe main.cpp -o e3.exe 

Моя ошибка:

C:\WiiGames\e3>make build 
C:/MinGW/bin/g++.exe main.cpp -o e3.exe 
make: *** [build] Error 1 

C:\WiiGames\e3> 

Любая помощь будет принята с благодарностью.

Мой код:

#include <iostream> 
#include <stdio.h> 
#include <string> 
#include <cmath> 
#include <cstdlib> 
#include <time.h> 

int main() { 
    printf("Hello World!"); 
} 

г ++ -v:

Using built-in specs. 
COLLECT_GCC=g++ 
COLLECT_LTO_WRAPPER=c:/mingw/bin/../libexec/gcc/mingw32/4.6.2/lto-wrapper.exe 
Target: mingw32 
Configured with: ../gcc-4.6.2/configure --enable-languages=c,c++,ada,fortran,objc,obj-c++ --disable-sjlj-exceptions --with-dwarf2 --enable-shared --enable-libgomp --disable-win32-registry --enable-libstdcxx-debug --enable-version-specific-runtime-libs --build=mingw32 --prefix=/mingw 
Thread model: win32 
gcc version 4.6.2 (GCC) 
+0

Было бы намного легче ответить, если бы вы предоставили свой код. – iehrlich

+0

Я добавил код. –

ответ

1

Что происходит, когда вы запускаете g++.exe main.cpp -o e3.exe в командной строке непосредственно? Если ничего не происходит, g ++ на вашем пути? Я бы начал с того, что g ++ настроен и на вашем пути.

+0

Абсолютно ничего. Сегодня я установил MinGW. –

1

Убедитесь, что это вкладка, а не пробелы в файле make перед c:/mingw ... Line. Похоже, что это make, дающий ошибку, а не g ++.

+0

Это действительно вкладка. запуск команды сборки из командной строки не дает выхода, поэтому я думаю, что это g ++. –

+0

Действительно ли g ++ выводит что-либо, если вы не передадите ему командную строку? Или просто запустите «g ++ -v», чтобы получить информацию о версии? Кроме того, что main обычно объявляется как «int main (int argc, char * argv [])», ваш код выглядит отлично.Это должно быть проблема установки с mingw. –

+0

g ++ -v добавлено выше. Если я просто запустил g ++, он говорит: g ++: фатальная ошибка: компиляция входных файлов не завершена. Если я строю из командной строки, я получаю 1 пустую строку, и она завершается. –

0

В случае, если вы еще не поняли это (этот вопрос более одного месяца):

g++ -v 

только дает информацию о конфигурации для GCC. Это именно то, что вы получаете.

g++ 

Вызывает GCC, но поскольку GCC не знает, что делать, вы получаете сообщение об ошибке.

g++ main.cpp -o e3.exe 

Фактически дает GCC достаточную информацию для компиляции рассматриваемой программы. Если компиляция работает , вы не должны получать никаких сообщений. GCC следует за Rule of Silence («Когда программа ничего удивительного не скажет, она ничего не должна говорить»), поэтому успешная компиляция не дает выхода.

Ошибка, которую вы изначально разместили, от make. Вы можете это сказать, потому что (1) начинается с «make:» и (2) ошибки GCC гораздо более подробные.

После того, как вы собрали программу, вы должны увидеть, если e3.exe существует в текущем каталоге (строки, начинающиеся с $, что вы вводите, без $):

$ g++ main.cpp -o e3.exe 
$ ls 
main.cpp e3.exe 
$ ./e3.exe 
Hello World! 

MinGW следующим образом UNIX custom и делает не включать текущий каталог в ваш PATH. Чтобы запустить программу, вы должны указать «тот, что в текущем каталоге», что и делает в моем примере ./.

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