c - 使用 -lncurses 对 `initscr' 的 undefined reference

标签 c makefile ncurses

<分区>

我注意到我的程序没有构建在另一个发行版上。我在 makefile CFLAGS 上设置了 -lncurses,但出现“对 `initscr' 的 undefined reference ”错误。

这是生成文件:

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

那么我该如何解决这个问题呢?我如何将 -lncurses 指令移到 makefile 的最后?

最佳答案

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

关于c - 使用 -lncurses 对 `initscr' 的 undefined reference ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25470412/

相关文章:

c - int value[] 是什么意思?

c++ - 添加对C++ 2011的编译器支持

android - 使 : *** No targets specified and no makefile found. 停止

c - execvp() 输出为 ncurses 创建缩进

c - 在结构中打印 Int 打印地址

一次复制 8 个字节的结构

c - 包装函数的内联汇编器由于某种原因不起作用

makefile - 防止在根目录中运行 cmake

linux - 使用 ncurses 捕获特殊字符

c++ - 使用 xcode 的 ncurses.h 库中的 initscr() 函数错误