未定义的引用`initscr'使用-lncurses

时间:2014-08-24 09:44:23

标签: c makefile ncurses

我注意到我的程序没有在另一个发行版上构建。我对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指令?

2 个答案:

答案 0 :(得分:1)

这是因为链接器以一种相反的顺序查找依赖关系,所以如果目标文件O依赖于库L,那么库L必须是之后目标文件O in命令行。

答案 1 :(得分:1)

-lncursesCFLAGS移至LDFLAGS

CFLAGS+=-std=c99 -pedantic -Wall
LDFLAGS+=-lncurses