ncurses 已安装...但无法编译代码

ncurses 已安装...但无法编译代码

在 Fedora 上短暂停留后,我最近又回到了 Xubuntu 22.04。在 Fedora 下,我似乎能够顺利安装 ncurses。然后我可以简单地编写代码并使用以下命令进行编译:

$gcc -lncurses main.c

现在,当我尝试这样做时,它给了我:

/usr/bin/ld: /tmp/cczC1PpK.o: in function `main':
main.c:(.text+0x9): undefined reference to `initscr'
/usr/bin/ld: main.c:(.text+0x1d): undefined reference to `printw'
/usr/bin/ld: main.c:(.text+0x24): undefined reference to `stdscr'
/usr/bin/ld: main.c:(.text+0x2c): undefined reference to `wgetch'
/usr/bin/ld: main.c:(.text+0x31): undefined reference to `endwin'
/usr/bin/ld: warning: creating DT_TEXTREL in a PIE
collect2: error: ld returned 1 exit status

我尝试使用以下方法进行安装:

sudo apt-get install libncurses5-dev libncursesw5-dev
sudo apt-get install ncurses-dev  libncurses5-dev libncursesw5-dev
sudo apt-get install libncurses5 libncurses5:i386
sudo apt-get install libncurses5:i386

一切似乎都安装顺利,没有错误或警告。

然而,我的代码根本无法识别 ncurses 函数。

代码如下:

#include <stdio.h>
#include <ncurses.h>


int main()
{
    initscr();
    
    printw("Hello World!");
    getch();
    
    endwin();   
    return 0;
}

它很简单,但却失败了。

有任何想法吗?

谢谢。

答案1

而不是使用gcc -lncurses main.c

你需要使用

gcc  main.c -lncurses

-lncurses 指令位于 gcc 命令行中的目标代码之后

答案2

尝试gcc main.c -lncurses一下。如手册页所示,

-l 选项的位置很重要。

相关内容