2013-07-16 2 views
2

Я не могу заставить эту ошибку makefile уйти. Я пробовал каждый синтаксис на земле, и я не могу понять, что не так.Ошибка константного makefile

Мой Makefile гласит:

huffmanCodeGenerator: main.o 
g++ -o huffmanCodeGenerator main.o 

main.o: main.cpp ReadFile.h HuffmanCode.h ConstructTree.h WriteFile.h 
g++ -c main.cpp 

ReadFile.o: ReadFile.cpp ReadFile.h 
g++ -c ReadFile.cpp 

HuffmanCode.o: HuffmanCode.cpp HuffmanCode.h 
g++ -c HuffmanCode.cpp 

ConstructTree.o: ConstructTree.cpp ConstructTree.h 
g++ -c ConstructTree.cpp 

WriteFile.o: WriteFile.cpp WriteFile.h 
g++ -c WriteFile.cpp 

clean: 
&nbps rm *.o huffmanCodeGenerator 

У меня есть все эти файлы в моем каталоге и я получаю

error 2 - the system cannot find the file specified.

Вот скриншот из моего каталога и ошибок: makefile error

Любые предложения о том, как исправить это? Мне все равно, насколько хорош или насколько корректен синтаксис. Пока это происходит.

+3

сделать на окнах - вероятно, рецепт катастрофы. В какой версии вы конкретно работаете? Какую версию и сборку (mingw/cygwin/other) gcc вы используете? –

+0

Похоже, что он не может найти 'g ++' сам. Является 'g ++' в вашей 'PATH'? –

+2

И как только вы преодолеете это препятствие, вам, как мне кажется, понадобится перечислить множество объектных файлов в первых двух строках вашего «Makefile». (т. е. больше, чем просто 'main.o') –

ответ

4

Первая проблема, я вижу, что ваши первые две строки неверны. Линкером нужны все объектные файлы, а не только main.o, чтобы связать их вместе.

Во-вторых, вы уверены, что ваша Windows знает путь к g ++? Что произойдет, если вы попробуете g ++ --help в cmd, например? (Не уверен в этом, но я запускаю его так же, как в Unix).

В-третий, это выглядит похоже на вашу проблему: Internal Builder: Cannot run program "g++": The system cannot find the file specified

Этого link: приводит к выводу о том, что вам нужно:. 1) имеет г ++ ех в текущей папке или 2) есть на вашем PATH

+0

Я думаю, что окна, вероятно, захотят' g ++ /? 'вместо' --help', если это похоже на другие программы windows cmd. –

+0

Аргумент 'g ++' почти не имеет значения. Либо он выплескивает какое-либо сообщение, связанное с g ++, либо выплевывает что-то, указывающее, что оно не было признано как действительная команда. –

+0

Да, я оставил все остальные объектные файлы для компоновщика, что было частью проблемы. Другая часть была minGW, я удалил и переустановил ее, и все получилось. Я думаю, что это, возможно, просто устарело. Я не использовал его через некоторое время. Спасибо за вашу помощь! –

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