Я столкнулся с очень странной проблемой makefile, вот он: Система: Linux CentOS 6 В начале имя файла makefile является «makefile», его выборкой содержание:Очень странная проблема makefile, нет такого файла или каталога
OPTFLAGS = -Wall -g -O
CXX = g++
INC = -I/usr/local/include -I/usr/include
LIBS = -L/usr/local/lib -L/usr/lib64
CXXFLAGS = $(OPTFLAGS) $(INC)
SOURCES = file1.cpp file2.cpp file3.cpp
OBJECTS = $(SOURCES:.cpp=.o)
EXECUTABLE = mybin
$(EXECUTABLE): $(OBJECTS)
$(CXX) $(CXXFLAGS) $(INC) $(LIBS) $(OBJECTS) -o [email protected]
file1.o : file1.cpp
file2.o : file2.cpp
file3.o : file3.cpp
.PHONY: clean
clean:
rm -f $(EXECUTABLE) *.o core*
я получил следующее ERR после того, как я побежал «сделать»: г ++: не file3.o: нет такого файла или каталога
у меня есть обходной путь, чтобы добавить фиктивный файл после file3:
dummy.o : dummy.cpp
Этот способ я мог бы успешно построить.
И я знаю, что я могу удалить все эти строки:
file1.o : file1.cpp
file2.o : file2.cpp
file3.o : file3.cpp
позволяет сделать строить, используя настройки по умолчанию, я мог бы построить успешно этот путь.
Я также попытался просто переименовать «Makefile» в «Makefile», и со следующими линиями без фиктивной линии:
file1.o : file1.cpp
file2.o : file2.cpp
file3.o : file3.cpp
К моему удивлению, я мог бы построить успешно этот путь.
Может ли кто-нибудь объяснить, почему я получил ошибку «Нет такого файла или каталога» для последнего файла3 в начале?
Ниже приводится вывод ошибок: после того, как я добавил фиктивную линию
g++ -g -Wall -O -I/usr/local/include -I/usr/include -c -o file1.o file1.cpp
g++ -g -Wall -O -I/usr/local/include -I/usr/include -c -o file2.o file2.cpp
g++ -g -Wall -O -I/usr/local/include -I/usr/include -I/usr/local/include -I/usr/include -L/usr/local/lib -L/usr/lib64 -lsybdb file1.o file2.o file3.o -o mybin
g++: file3.o: No such file or directory
make: *** [mybin] Error 1
Ниже выхода:
g++ -Wall -g -O -I/usr/local/include -I/usr/include -c -o file1.o file1.cpp
g++ -Wall -g -O -I/usr/local/include -I/usr/include -c -o file2.o file2.cpp
g++ -Wall -g -O -I/usr/local/include -I/usr/include -c -o file3.o file3.cpp
g++ -Wall -g -O -I/usr/local/include -I/usr/include -I/usr/local/include -I/usr/include -L/usr/local/lib -L/usr/lib64 -lsybdb file1.o file2.o file3.o -o mybin
Я попытался переименовать «Makefile» в «Makefile» снова, и это Безразлично На этот раз не работай.
Вы можете показать нам * точный * вывод из запуска 'make', когда он терпит неудачу? –
@wallyk Нет, если это была проблема, вы увидели бы что-то вроде 'make: *** Нет правила делать target \' file3.o '. Stop.' Эта ошибка означает, что 'g ++' не может найти 'file3.o', который звучит так, будто он не смог правильно создать. –
Невозможно воспроизвести вашу проблему –