[英]“linker input file” unused error when trying to compile C++ code using R's g++ compiler
[英]Linker input file unused c++ g++ make file
我无法弄清楚导致这个错误的原因是我一直在制作我的项目:
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
一起传递给编译器调用,这意味着不执行链接,因此未使用-l
选项。 在您的情况下,您的LIB_FLAGS
不应该在FLAGS
,而是在main: ...
规则中指定:
main: main.cpp
$(CC) $(FLAGS) $(LIB_FLAGS) ...
编译(-c标志)源文件时不要给出链接标志。 看看这个示例makefile(非常类似于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
如前所述,您已经在编译阶段传递了与链接器相关的标志。 通常你需要不同的标志来编译和链接,例如
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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.