错误1:制作c文件时没有输入文件

时间:2014-10-27 15:38:19

标签: c gcc compiler-errors makefile

我尝试使用依赖于此错误的makefile编译带有依赖项的c文件:

Compiling tpc_lqe.o ...
/cygdrive/c/Sandbox/ZigBee/Tools/ba-elf-ba2/bin/ba-elf-gcc -c -o tpc_lqe.o  
[some -options]
-I/cygdrive/c/Sandbox/ZigBee/Components/TPC/Include 
-I/cygdrive/c/Sandbox/ZigBee/Components/TPC/Source 
-I/cygdrive/c/Sandbox/ZigBee/Components/AppApi/Include 
-I/cygdrive/c/Sandbox/ZigBee/Components/Common/Include 
-I /cygdrive/c/Sandbox/ZigBee/Components/TPC/Source/tpc_lqe.c -MD -MF tpc_lqe.d -MP
ba-elf-gcc: no input files
make: *** [tpc_lqe.o] Error 1
Makefile:138: recipe for target 'tpc_lqe.o' failed

我看到other questions关于同样的错误,但我无法解决这个问题。

这是导致错误的makefile行,请指出是否缺少某些上下文:

%.o: %.c
    $(info Compiling $@ ...)
    $(CC) -c -o $*.o $(CFLAGS) $(INCFLAGS) $< -MD -MF $*.d -MP

unwind's answer后面的

更新

我没有包含指定变量(包含库的路径),这导致以下包含该变量(INCFLAGS)以包含空格。此空白区域最终出现在-I选项中,从而返回错误。

一旦定义了变量,一切都顺利进行。

1 个答案:

答案 0 :(得分:2)

INCFLAGS看起来很糟糕,因为编译器调用有一个“裸”-I,没有紧随其后的值,这会导致gcc将下一个参数(源文件名)解释为该参数:

[...] -I /cygdrive/c/Sandbox/ZigBee/Components/TPC/Source/tpc_lqe.c
        ^
        |
       ???