Makefile没有这样的目录或文件错误

时间:2015-05-30 17:33:37

标签: c makefile

# 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

1 个答案:

答案 0 :(得分:2)

很明显,您遇到编码问题。将^添加到配方时,应使用ASCII字符$^(ASCII代码94)。您为$^引入了一些多字节字符的其他字符。这会导致make取出字符的第一个字节并将其作为变量名称并将其展开,从而产生一个空字符串,第二个字节保持原样并变为非法字符,因此输出中的奇怪字符线。

改变你的:

$(CC) $ˆ -o $@

为:

$(CC) $^ -o $@

它会起作用。