web-dev-qa-db-fra.com

clang: avertissement: -l *: entrée 'linker' non utilisée

Lorsque je compile du code en utilisant GNU Make, j'obtiens plusieurs avertissements comme:

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

C'est probablement parce que j'ai foiré quelque chose dans mon Makefile (ci-dessous). Quelqu'un peut-il m'indiquer le problème?

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
19
mareks

Ce message signifie que vous transmettez des indicateurs de l'éditeur de liens (comme -l Qui indique à l'éditeur de liens d'extraire une bibliothèque) au compilateur.

Cela signifie que le résultat de l'exécution de root-config --cflags --glibs Génère des indicateurs de l'éditeur de liens, et ceux-ci vont dans CXXFLAGS, qui est transmis au compilateur. Je ne sais pas ce que root-config Est, mais vous devriez enquêter sur sa ligne de commande et l'invoquer d'une manière où il ne génère pas de drapeaux de l'éditeur de liens. La suppression de l'option --glibs Le fera probablement.

ETA: vous vraiment voulez utiliser := Pour affecter ces variables drapeaux si vous allez y exécuter $(Shell ...). Cela fonctionnera dans les deux cas, mais si vous utilisez =, La commande Shell sera exécutée à chaque fois que make étend la variable, qui est une fois par compilation. Si vous utilisez :=, Il ne sera exécuté qu'une seule fois, lorsque le makefile sera analysé.

13
MadScientist

J'ai eu cette même erreur et la raison en est que j'ai oublié d'ajouter -I devant mes chemins inclus pour les cflags dans le makefile. Par exemple:

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