【问题标题】:clang: warning: principal.o: 'linker' input unused叮当声:警告:principal.o:“链接器”输入未使用
【发布时间】:2016-11-07 17:11:41
【问题描述】:

我正在学习计算机工程,我正在尝试编写一个练习,但我在问题的标题中收到警告

clang: warning: principal.o: 'linker' input unused

我认为这是我的 Makefile 中的一个问题,但我无法找到它。这是我的 Makefile

CPPFLAGS = g++ -c

principal : principal.o 
    $(CPPFLAGS) principal.o -o principal

principal.o: principal.cpp conjunto.o
    $(CPPFLAGS) principal.cpp -o principal.o -I.

enfermedad.o: enfermedad.cpp
    $(CPPFLAGS) enfermedad.cpp -o enfermedad.o -I.

mutacion.o: mutacion.cpp enfermedad.o
    $(CPPFLAGS) mutacion.cpp -o mutacion.o -I.

conjunto.o: conjunto.cpp mutacion.o
    $(CPPFLAGS) conjunto.cpp -o conjunto.o -I.

clean:
    echo "Cleaning..."
    rm *.o

非常感谢回答的人。

【问题讨论】:

  • g++ -c principal.o -o principal 在我看来不合适。不应该是g++ principal.o principal吗?
  • -c 选项的意思是“不运行链接器”。

标签: c++ c makefile linker


【解决方案1】:

使用 CPPFLAGS 来指定编译器和标志充其量是不合常规的;你最好把它们分开。

对您的 makefile 的最小修复是:

principal : principal.o 
    g++ principal.o -o principal

这避免了在打算链接程序时包含-c 选项。但是,您可能需要在链接命令行中列出所有目标文件。你的依赖结构也有点不寻常,虽然没有正式错误。

因此,一个更合理的解决方法是:

OBJECTS = principal.o enfermedad.o mutacion.o conjunto.o 

principal: ${OBJECTS} 
    g++ ${OBJECTS} -o $@

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-03
    • 1970-01-01
    • 2017-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-05
    相关资源
    最近更新 更多