【问题标题】:Makefile No such directory or file errorMakefile 没有这样的目录或文件错误
【发布时间】:2015-05-30 17:33:37
【问题描述】:
# 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

【问题讨论】:

  • 错误,ass.exe??!你最好重命名这个可执行文件。
  • 你能发布确切的错误信息吗?编辑问题并将其添加到底部。
  • 好的!我已经添加了详细的错误消息。这表示该文件不存在。
  • 关于可执行文件的规则,您应该使用LINK.c 变量而不是CC,因为它考虑了许多有用的其他选项变量。从make -p,定义为LINK.c = $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH)

标签: c makefile


【解决方案1】:

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

改变你的:

$(CC) $ˆ -o $@

到:

$(CC) $^ -o $@

它会起作用的。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2016-01-10
  • 1970-01-01
  • 2012-08-05
  • 1970-01-01
  • 2013-12-03
  • 1970-01-01
  • 1970-01-01
  • 2014-12-09
相关资源
最近更新 更多