我无法弄清楚是什么原因造成这个错误,我不断收到在做我的项目:
i686-apple-darwin11-llvm-g++-4.2: -lncurses: linker input file unused because linking not done
而我的make文件看起来是这样的:
CC = g++
LIB_FLAGS = -l ncurses
FLAGS = $(LIB_FLAGS)
DEPENDENCIES = window.o element.o
# FINAL OUTPUTS
main: main.cpp $(DEPENDENCIES)
$(CC) $(FLAGS) -o main.out main.cpp $(DEPENDENCIES)
# MODULES
window.o: main.h classes/window.cpp
$(CC) $(FLAGS) -c classes/window.cpp
element.o: main.h classes/element.cpp
$(CC) $(FLAGS) -c classes/element.cpp
# CLEAN
clean:
rm -rf *.o
rm main.out
一切编译好的,但我只是好奇,是什么原因造成这种错误消息,这意味着什么..
不要给链接标志时,您编译(-c标志)的源文件。 就拿这个例子中的makefile看看(如生成文件的文档非常相似)
CPP = g++
CPPFLAGS =-Wall -g
OBJECTS = main.o net.o
PREFIX = /usr/local
.SUFFIXES: .cpp .o
.cpp.o:
$(CPP) $(CPPFLAGS) -c $<
.o:
$(CPP) $(CPPFLAGS) $^ -o $@
main: $(OBJECTS)
main.o: main.cpp
net.o: net.cpp net.h
.PHONY:
install: main
mkdir -p $(PREFIX)/bin
rm -f $(PREFIX)/bin/main
cp main $(PREFIX)/bin/main
clean:
rm -f *.o main
你逝去的链接选项的编译器调用连同-c
,这意味着连接不执行,从而-l
选项不使用。 在你的情况,你的LIB_FLAGS
不应该在FLAGS
,但在该规定的,而不是main: ...
规则:
main: main.cpp
$(CC) $(FLAGS) $(LIB_FLAGS) ...
如已经提及您是在编译阶段通过连接器相关的标志。 通常你需要编译和链接,例如不同的标志
CC = g++
CPPFLAGS = -Wall -g -c -o $@
LDFLAGS = -l ncurses -o $@
DEPENDENCIES = main.o window.o element.o
# FINAL OUTPUTS
main: $(DEPENDENCIES)
$(CC) $(LDFLAGS) $(DEPENDENCIES)
# MODULES
main.o: main.h main.cpp
$(CC) $(CPPFLAGS) main.cpp
window.o: main.h classes/window.cpp
$(CC) $(CPPFLAGS) classes/window.cpp
element.o: main.h classes/element.cpp
$(CC) $(CPPFLAGS) classes/element.cpp
# CLEAN
clean:
-rm main $(DEPENDENCIES)