Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > GNU toolchain > gcc и make от MinGW


Автор: Ostap 13.10.2005, 20:06
Не могу разобраться.
Установил компилятор и make от MinGW в Windows. Проверя, пишу хеоворлд и makefile
Код

makefile:
all: hello

clean:
        -rm main.o hello.exe hello
        
hello: main.o
        g++ -g -o hello main.o

main.o: main.cpp
        g++ -c -g main.cpp

Прописал в переменной PATH расположение компилятора и пр.
запуская и вот результат:
Код

c:\blablabla\hello>make all
g++ -c -g main.cpp
g++.exe: no input files         <----------------------
make: *** [main.o] Error 1

c:\blablabla\hello>

Меня интерисует строчка, отмеченная стрелочкой. По какой причине она возникает?

Автор: LPBOY 13.10.2005, 20:32
Никогда не использовал MinGW gcc. Только собираюсь... Но у меня в 'избранном' завалялась эта ссылка. Посмотри, вдруг поможет...
http://www.rsdn.ru/Forum/Message.aspx?mid=69830#69830

Автор: bilbobagginz 13.10.2005, 20:37
вопрос1: где находится Makefile, и где main.cpp ?



Автор: Ostap 14.10.2005, 06:27
Цитата
где находится Makefile, и где main.cpp
В каталоге c:\blablabla\hello

Автор: Ostap 14.10.2005, 21:19
Пробовал советы из указанной ссылки. Не помогло, картина таже. Под Linux все тоже самое работает (разве что компилятор и make нативный)

Автор: S.A.P. 14.10.2005, 21:30
Попробуй просто запусти g++ -o hello.exe hello.cpp

Автор: bilbobagginz 14.10.2005, 21:44
и как называется файл программы хелло-ворлда ?

Автор: Ostap 15.10.2005, 19:42
Компиляция руками работает. Исходник, как и указано в makefile, называется main.cpp. В makefile только опечатка в 8 строчке, .exe недописал, но это сути не меняет.
Как баран бьюсь и в упор не понимаю логику происходящих вещей - повторю, руками все работает. через make не хочет, хоть тресни.

Автор: Mayk 15.10.2005, 22:52
хммм. странно. если из комстроки работает а так нет, попробуй пошаманить -
убедись что запускается make от mingw'а а не чей-либо еще
убедись, что при запуске make по какой-либо причине вдруг не произошла смена директории
попробуй убрать -g из makefile.
попробуй make -d (debug mode)
попробуй просто cut'n'pasteить команду по сборке из makefile в комстроку.

Автор: Ostap 16.10.2005, 17:01
Толи я не шаман, толи бубен не звенит.
Итак в дериктории mingw\bin были make.exe и mingw32-make.exe , при чем разного размера. Заменил первое вторым. Ура работет, но.... Короче картина такая.
Шаг 1.
Код

C:\workspace\hello>ls -l
total 1
-rw-r--r--    1 Ostap    Administ      128 Oct 13 20:05 main.cpp
-rw-r--r--    1 Ostap    Administ      166 Oct 16 18:03 makefile

C:\workspace\hello>make all
g++ -c main.cpp
g++ -g -o hello.exe main.o

C:\workspace\hello>hello.exe
Hello

C:\workspace\hello>

makefile такой
Код

makefile:
all: hello

clean:
        -rm main.o hello.exe hello
        
hello: main.o
        g++ -g -o hello.exe main.o

main.o: main.cpp
        g++ -c -g main.cpp

Итак вроде все хорошо. Здесь меня поджедала радость
Однако, шаг 2
Код

c:\workspace\helloQT>ls -l
total 1
-rw-r--r--    1 Ostap    Administ      286 Oct 15 22:29 j.cpp

c:\workspace\helloQT>qmake -project

c:\workspace\helloQT>qmake

c:\workspace\helloQT>ls -l
total 9
-rw-r--r--    1 Ostap    Administ     4956 Oct 16 18:15 Makefile
-rw-r--r--    1 Ostap    Administ     4281 Oct 16 18:15 Makefile.Debug
-rw-r--r--    1 Ostap    Administ     4335 Oct 16 18:15 Makefile.Release
drwxr-xr-x    2 Ostap    Administ        0 Oct 16 18:15 debug
-rw-r--r--    1 Ostap    Administ      307 Oct 16 18:15 helloQT.pro
-rw-r--r--    1 Ostap    Administ      286 Oct 15 22:29 j.cpp
drwxr-xr-x    2 Ostap    Administ        0 Oct 16 18:15 release

c:\workspace\helloQT>make
mingw32-make -f Makefile.Debug
mingw32-make[1]: Entering directory `c:/workspace/helloQT'
g++ -c -g -g -frtti -fexceptions -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_CORE_LIB -DQT_GUI_LIB
-DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I"C:/Qt/4.0.1/include/QtGui" -I"C:/Qt/4.0.1/include/QtCore" -I"C:/Qt/4
.0.1/include" -I"." -I"C:/Qt/4.0.1/include/ActiveQt" -I"debug" -I"." -I"C:/Qt/4.0.1/mkspecs/win32-g++" -o de
bug\j.o j.cpp
g++.exe: no input files
mingw32-make[1]: *** [debug\j.o] Error 1
mingw32-make[1]: Leaving directory `c:/workspace/helloQT'
mingw32-make: *** [debug] Error 2

c:\workspace\helloQT>

Я не то что ничего не понимаю, у меня впчатление, что здесь засада :-)

Автор: Mayk 16.10.2005, 17:18
Кстати, в винде есть ограничение на длину ком строки афаир.
Попробуй еще пошаманить - напиши консольную прогу, которая просто выводит ВСЕ переданные ей аргументы(по одному на строку). Ну типа
Код
main(int c, char**v){int j; for (j=1; j<c;++j) printf("%s\n",v[j]);}

и посмотри что она выводит.

Автор: Ostap 16.10.2005, 18:50
Результат таков - строчка компиляции помещяется полностью, хоть раз десяь вставляй.
Куда рыть уже не знаю smile

Автор: S.A.P. 16.10.2005, 19:08
Цитата(Ostap @ 16.10.2005, 17:01)
Я не то что ничего не понимаю, у меня впчатление, что здесь засада :-)

Я так понял ты собираешь проект на QT... Засада такая: QT не собирает отладочные либы по умолчанию (по крайней мере у меня так) , а валится проект у тебя похоже на сборке отладочной версии.

Тут есть 2 варианта:
1. Забить на Debug и компилить сразу в Release
Код

qmake -project
qmake
mingw32-make -f Makefile.Release

2. Собрать Debug либы и компилить по-человечески smile .

Автор: Guest 17.10.2005, 08:25
Проблема решена! Веесь косяк был в том, что надо было разнести по разным каталогам MSYS и другие пакеты от MinGW, а не складывать все в один bin. Теперь все работает.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)