【问题标题】:linker input file unused because linking not done - gcc链接器输入文件未使用,因为链接未完成 - gcc
【发布时间】:2012-05-07 17:51:59
【问题描述】:

我是编写 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有什么问题吗?提前致谢。

【问题讨论】:

    标签: gcc linker makefile


    【解决方案1】:

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

    -M

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

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

    -MM

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

    您实际上是只是预处理,因此没有编译,没有链接以及由此产生的错误。

    【讨论】:

    • 谢谢帕万的回复。这就说得通了。感谢您的链接,将通过各种选项。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多