# Set the flags for the C compiler
CFLAGS= -Wall -pedantic -std=c99
# Build rule for the final executable
ass.exe: assemble.o branch.o dataProcessing.o multiply.o singleDataTransfer.o special.o
$(CC) $ˆ -o $@
# Build rules for the .o files
assemble.o: assemble.c dataProcessing.h multiply.h singleDataTransfer.h special.h branch.h
$(CC) $(CFLAGS) $< -c -o $@
branch.o: branch.c branch.h
$(CC) $(CFLAGS) $< -c -o $@
dataProcessing.o: dataProcessing.c dataProcessing.h
$(CC) $(CFLAGS) $< -c -o $@
multiply.o: multiply.c multiply.h
$(CC) $(CFLAGS) $< -c -o $@
singleDataTransfer.o: singleDataTransfer.c singleDataTransfer.h
$(CC) $(CFLAGS) $< -c -o $@
special.o: special.c special.h
$(CC) $(CFLAGS) $< -c -o $@
# Rule to clean generated files
clean:
rm -f
# Tell make that ‘clean’ is not a real file
.PHONY: clean
这是我的makefile文件。但是最后的可执行文件无法创建,尽管可以创建所有其他.o文件,我可以使用这个makefile创建的.o文件来编译终端中的可执行文件。 有人可以就如何纠正我的makefile中的错误提出一些建议吗?
这是错误消息:
cc � -o ass.exe
cc: error: �: No such file or directory
cc: fatal error: no input files
compilation terminated.
make: *** [ass.exe] Error 4
答案 0 :(得分:2)
很明显,您遇到编码问题。将^
添加到配方时,应使用ASCII字符$^
(ASCII代码94)。您为$^
引入了一些多字节字符的其他字符。这会导致make取出字符的第一个字节并将其作为变量名称并将其展开,从而产生一个空字符串,第二个字节保持原样并变为非法字符,因此输出中的奇怪字符线。
改变你的:
$(CC) $ˆ -o $@
为:
$(CC) $^ -o $@
它会起作用。