我注意到我的程序没有在另一个发行版上构建。我对makefile CFLAGS进行了-lcucurses,但得到了对`initscr'"的未定义的引用。错误。
这是makefile:
CFLAGS+=-std=c99 -pedantic -Wall -lncurses
BIN=progname
all: $(BIN)
install: all
mkdir -p $(DESTDIR)/usr/bin
install -m 755 $(BIN) $(DESTDIR)/usr/bin/
uninstall:
rm -f $(DESTDIR)/usr/bin/$(BIN)
clean:
rm -f $(BIN)
这是cc命令:
cc -std=c99 -pedantic -Wall -lncurses nbwmon.c -o nbwmon
如果我最后移动-lncurses,那么构建正常:
cc -std=c99 -pedantic -Wall nbwmon.c -o nbwmon -lncurses
那我怎么解决这个问题呢?我如何在makefile上移动-lncurses指令?
答案 0 :(得分:1)
这是因为链接器以一种相反的顺序查找依赖关系,所以如果目标文件O依赖于库L,那么库L必须是之后目标文件O in命令行。
答案 1 :(得分:1)
将-lncurses
从CFLAGS
移至LDFLAGS
:
CFLAGS+=-std=c99 -pedantic -Wall
LDFLAGS+=-lncurses