clang:警告:-l *:'链接器'输入未使用

时间:2013-11-04 18:44:57

标签: makefile gnu-make

当我使用GNU Make编译代码时,我会收到多个警告,如:

clang: warning: -lGui: 'linker' input unused

这可能是因为我在Makefile(下面)中弄乱了一些东西。有谁能指出我的问题?

CXX=g++
CC=g++
CXXFLAGS=-g -Wall -W -Wshadow -Wcast-qual -Wwrite-strings $(shell root-config --cflags --glibs)
CPPFLAGS+=-MMD -MP
LDFLAGS=-g $(shell root-config --ldflags)
LDLIBS=$(shell root-config --libs)

xSec_x: xSec_x.o xSec.o Analysis.o
-include xSec_x.d xSec.d Analysis.d

xSec.o: xSec.cpp xSec.h Analysis.h Analysis.cpp

xSec_x.o: xSec_x.cpp xSec.h Analysis.h

clean:
    rm -f @rm -f $(PROGRAMS) *.o *.d

2 个答案:

答案 0 :(得分:12)

该消息意味着您正在向编译器传递链接器标志(如-l,告诉链接器引入库)。

这意味着运行root-config --cflags --glibs的结果是生成链接器标志,并且这些标志将进入CXXFLAGS,并将其传递给编译器。我不知道root-config是什么,但您应该调查它的命令行并以不生成链接器标志的方式调用它。可能会删除--glibs选项。

ETA:如果您要在那里运行:= 希望使用$(shell ...)来分配这些标志变量。它将以任何一种方式工作,但是如果你使用=,那么每次make扩展变量时都会运行命令运行shell命令,每次编译一次。如果你使用:=,它只会在解析makefile时运行一次。

答案 1 :(得分:3)

我遇到了同样的错误,原因是我忘了在makefile中包含的cflags路径前添加-I。例如:

CFLAGS += $(path)/dir/subdir/include     -> Got the above mentioned error.
CFLAGS += -I$(path)/dir/subdir/include   -> Fixed the issue.