链接器输入文件未使用,因为链接未完成 - gcc

时间:2012-05-07 17:52:00

标签: gcc linker makefile

我是编写makefile的初学者。我有一个像这样的makefile:

PATH1 = /ref

CC=gcc
LINK = gcc

INCLUDES = .
INCLUDES += -I/PATH1/inc \
        -I/$(PATH1)/abc/inc/ \
        -I/$(PATH1)/def/inc/ 


all: src_file

run: src_file

src_file: 
    $(CC) $(INCLUDES) -MM  /ref/abcd.c -o $@ 

clean:
    rm -f *.o src_file

如果我做了一个make,我会收到错误:

linker input file unused because linking not done.

我在stackoverflow中读了一些类似的帖子,但无法得到解决方案。有人可以让我知道我的makefile有什么问题吗?提前谢谢。

1 个答案:

答案 0 :(得分:3)

罪魁祸首是预处理器选项-MM。来自gcc pre-processor options

  

-M

     

不输出预处理结果,而是输出适合描述主源文件依赖关系的规则。   预处理器输出一个包含目标文件名的make规则   对于该源文件,冒号和所有包含的名称   文件,包括来自-include或-imacros命令行的文件   选项。

     

将-M传递给驱动程序意味着-E,并使用隐式-w来抑制警告。

     

<强> -MM

     

与-M类似,但不提及在系统头目录中找到的头文件,也不提及直接或包含的头文件   间接地,来自这样的标题。

如此有效地你只是预处理,因此没有编译和没有链接以及由此产生的错误。