在 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 选项的位置很重要。