Страница 1 из 2

Ошибка при компиляции из makefile-а

Добавлено: 24 май 2010, 01:30
waP
Доброго дня.
Проблема в следующем. Есть исходники готового проекта, написанного на C.
Такой минисимулятор движения парусника. Его нужно немного переделать, и заново собрать. Это не столь важно. А важно то, что при компиляции из makefile, получаем следующую ошибку:

Код: Выделить всё

$ make -f c:/src/makefile.rsx
make: *** No rule to make target `main.c', needed by `main.o'.  Stop.
Также привожу полное содержание мэйкфайла

Код: Выделить всё

#
# This makefile is created by rsxide (release 10/99)
#

.SUFFIXES: .exe .res .a .o .c .cpp .cc .cxx .m .rc .p .f .F .r .y .l .s .S .def .h

CC=gcc.exe
LD=gcc.exe
AR=ar.exe
RC=rc.exe
RSRC=rsrc.exe
IMP=makelib.exe
WIN32_FLAG=-mwindows
RSX32_FLAG=
DLL_FLAG=-mdll
CRT_FLAG=
NRT_FLAG=
SYS_FLAG=
SO_FLAG=
STRIP_FLAG=-s


all: surprise.exe

CC_TARGET_01=$(WIN32_FLAG) 
CFLAGS_TARGET_01=-O2 -Wall -W 

surprise.exe: main.o su.res auto.o calc.o cfg.o dlg.o map.o sail.o oth2.o oth.o ezf.o pla.o set.o ste.o
	$(LD) $(CC_TARGET_01) -s  -o surprise.exe main.o auto.o calc.o cfg.o dlg.o map.o sail.o oth2.o oth.o ezf.o pla.o set.o ste.o -lcomctl32 
	$(RSRC) su.res surprise.exe

main.o: main.c
	$(CC) -c -o main.o main.c -g $(CC_TARGET_01)  $(CFLAGS_TARGET_01)

su.res: su.rc
	$(RC) -r -ic:/progs/gcc/i386-mingw32msvc/include -fosu.res su.rc

auto.o: auto.c
	$(CC) -c -o auto.o auto.c -g $(CC_TARGET_01)  $(CFLAGS_TARGET_01)

calc.o: calc.c
	$(CC) -c -o calc.o calc.c -g $(CC_TARGET_01)  $(CFLAGS_TARGET_01)

cfg.o: cfg.c
	$(CC) -c -o cfg.o cfg.c -g $(CC_TARGET_01)  $(CFLAGS_TARGET_01)

dlg.o: dlg.c
	$(CC) -c -o dlg.o dlg.c -g $(CC_TARGET_01)  $(CFLAGS_TARGET_01)

map.o: map.c
	$(CC) -c -o map.o map.c -g $(CC_TARGET_01)  $(CFLAGS_TARGET_01)

sail.o: sail.c
	$(CC) -c -o sail.o sail.c -g $(CC_TARGET_01)  $(CFLAGS_TARGET_01)

oth2.o: oth2.c
	$(CC) -c -o oth2.o oth2.c -g $(CC_TARGET_01)  $(CFLAGS_TARGET_01)

oth.o: oth.c
	$(CC) -c -o oth.o oth.c -g $(CC_TARGET_01)  $(CFLAGS_TARGET_01)

ezf.o: ezf.c
	$(CC) -c -o ezf.o ezf.c -g $(CC_TARGET_01)  $(CFLAGS_TARGET_01)

pla.o: pla.c
	$(CC) -c -o pla.o pla.c -g $(CC_TARGET_01)  $(CFLAGS_TARGET_01)

set.o: set.c
	$(CC) -c -o set.o set.c -g $(CC_TARGET_01)  $(CFLAGS_TARGET_01)

ste.o: ste.c
	$(CC) -c -o ste.o ste.c -g $(CC_TARGET_01)  $(CFLAGS_TARGET_01)

#
# This dependencies file is created by rsxide
#
К слову, все эти действия происходят с помощью MinGW, а именно компилятора gcc, плюс MSYS.
Заранее благодарен.

Re: Ошибка при компиляции из makefile-а

Добавлено: 24 май 2010, 03:01
Romeo
Подозреваю, что make запускается не из той папки, где лежи файл main.c. Других причин пока просто не вижу.

Re: Ошибка при компиляции из makefile-а

Добавлено: 24 май 2010, 03:12
waP
То есть Вы хотите сказать, что нужно перенести все исходники, включая мэйкфайл, непосредственно в папку, где находится make, а именно в x:\MSYS\1.0\bin.
Или я чего-то не понимаю?

Re: Ошибка при компиляции из makefile-а

Добавлено: 24 май 2010, 11:31
Romeo
Нет. Как я понял, вызов команды make происходит не из той же самой папки, где расположены C файлы, в частности файл main.c. Дело в том, что каждый таргет в мэйкфайле либо должен быть описан слева от двоеточия, либо (если нигде слева от двоеточия он не встречается), то он должен являться именем файла в текущей папки, из которой был запущен make. Из ошибки видно, что make не может найти таргет main.c, а так, как main.c является файлом, то значит он не может найти сам файл.

Re: Ошибка при компиляции из makefile-а

Добавлено: 24 май 2010, 11:48
waP
Хм, приблизительно понял, о чем Вы говорите.
А какие пути решения этой проблемы могут существовать?

Re: Ошибка при компиляции из makefile-а

Добавлено: 24 май 2010, 13:42
Romeo
Сменить текущую папку на ту, где лежит main.c (иными словами запустить команду make -f c:/src/makefile.rsx оттуда, где лижит main.c) либо, если это невозможно, поправить makefile, добавив к main.c путь.

Re: Ошибка при компиляции из makefile-а

Добавлено: 24 май 2010, 17:10
waP
К сожалению, и это не помогло. Создается впечатление, что мэйкфалу совершенно не нужны исходники, ибо даже при их удалении он выполняется, и заканчивается все той же ошибкой.
Какие еще могут быть причины такого странного поведения?

Re: Ошибка при компиляции из makefile-а

Добавлено: 24 май 2010, 17:53
BulldozerBSG
выкладывай проект, посмотрим...

Re: Ошибка при компиляции из makefile-а

Добавлено: 24 май 2010, 18:04
waP
Вот прямой линк на архив с исходным проектом.
Крайне благодарен за помощь.

Re: Ошибка при компиляции из makefile-а

Добавлено: 24 май 2010, 18:32
BulldozerBSG
Только что установил MinGW/MSYS проект собрался из make файла без всяких нареканий
Изображение
У вас два варианта:
1. не правильно установлен пакет компилятора
2. вы действительно не правильно пытаетесь запустить make