clang: предупреждение: - L*: вход 'linker' не используется
когда я компилирую код с помощью GNU, я получаю несколько предупреждений, таких как:
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 ответов
это сообщение означает, что вы передаете флаги компоновщика (например,-l
который сообщает компоновщику, чтобы вытащить библиотеку) компилятору.
это означает, что результат выполнения root-config --cflags --glibs
генерирует флаги компоновщика, и они входят в CXXFLAGS
, который передается компилятору. Я не знаю, что!--3--> есть, но вы должны исследовать его командную строку и вызвать ее таким образом, чтобы она не генерировала флаги компоновщика. Вероятно, удаление --glibs
опция будет делать он.
эта: ты действительно до :=
чтобы назначить эти переменные флагов, если вы собираетесь запустить $(shell ...)
там. Он будет работать в любом случае, но если вы используете =
тогда команда оболочки будет запущена каждый раз, когда make расширяет переменную, который один раз за компиляцию. Если вы используете :=
он будет запущен только один раз, когда makefile будет проанализирован.
Я получил эту же ошибку, и причина в том, что я забыл добавить -I
перед моими включенными путями для cflags в makefile. Например:
CFLAGS += $(path)/dir/subdir/include -> Got the above mentioned error.
CFLAGS += -I$(path)/dir/subdir/include -> Fixed the issue.