如何在 Linux 上安装 ncurses 库
我需要使用 ncurses 库和头文件编译应用程序。如何在 Linux 操作系统上安装 ncurses 库和头文件?如何使用 ncurses 编写一个简单的 hello world 程序并在 Linux 上编译它?
GNU ncurses 是用于控制在 Unix、Linux 和其他操作系统下写入控制台屏幕的软件 API。您可以使用 ncurses 库在 Linux 或类 Unix 系统上创建基于文本的用户界面 (TUI)。
GNU ncurses 是用于控制在 Unix、Linux 和其他操作系统下写入控制台屏幕的软件 API。您可以使用 ncurses 库在 Linux 或类 Unix 系统上创建基于文本的用户界面 (TUI)。
教程详细信息 | |
---|---|
难度等级 | 简单的 |
Root 权限 | 是的 |
要求 | Linux 终端 |
类别 | 包管理器 |
操作系统兼容性 | Alma • Arch • Debian • Fedora • Mint • Pop!_OS • RHEL • Rocky • Stream • Ubuntu |
预计阅读时间 | 3 分钟 |
在 Debian/Ubuntu Linux 中安装 ncurses 库
- 您需要安装以下两个软件包::
libncurses5-devncurses 的开发库
libncursesw5-dev:ncursesw 的开发库 - 打开终端应用程序。
- 键入以下apt-get 命令来安装 ncurses 标头和库:
$ sudo apt-get install libncurses5-dev libncursesw5-dev
图01:使用apt-get安装ncurses库
在 CentOS/RHEL/Scientific Linux 6.x/7.x+ 和 Fedora Linux 21 或更早版本中安装 ncurses 库
- 您需要安装以下软件包:
ncurses-devel ncurses 的开发人员库 - 打开终端应用程序。
- 键入以下yum 命令来安装 ncurses 标头和库:
$ sudo yum install ncurses-devel
图02:使用yum安装ncurses库
在 Fedora Linux 22.x+ 中安装 ncurses 库
- 您需要安装以下软件包:
ncurses-devel ncurses 的开发人员库 - 打开终端应用程序。
- 键入以下 dnf 命令来安装 ncurses 标头和库:
$ sudo dnf install ncurses-devel
如何编译 C 程序并使用 ncurses 库?
创建一个名为hello.c的测试程序,内容如下:
#include <ncurses.h> int main(void){ initscr(); /* Start curses mode */ printw("Hello World! Press any key to exit ..."); /* Print Hello World */ refresh(); /* Print it on to the real screen */ getch(); /* Wait for user input */ endwin(); /* End curses mode */ return 0; }
首先,确保在 Linux 上安装了 GNU/GCC C 编译器:
要链接到 ncurses 库,请将-lncurses选项传递给 gcc/cc 命令:
运行它:
示例输出:
$ cc -o output input.c -lncurses
$ cc -o hello hello.c -lncurses
$ ./hello
Hello World! Press any key to exit ...
这是另一个程序:
/* CURWIN1.C ========= (c) Copyright Paul Griffiths 1999 Email: mail@paulgriffiths.net Moving windows with ncurses. */ #include <stdlib.h> #include <stdio.h> #include <curses.h> int main(void) { WINDOW * mainwin, * childwin; int ch; /* Set the dimensions and initial position for our child window */ int width = 23, height = 7; int rows = 25, cols = 80; int x = (cols - width) / 2; int y = (rows - height) / 2; /* Initialize ncurses */ if ( (mainwin = initscr()) == NULL ) { fprintf(stderr, "Error initialising ncurses.\n"); exit(EXIT_FAILURE); } /* Switch of echoing and enable keypad (for arrow keys) */ noecho(); keypad(mainwin, TRUE); /* Make our child window, and add a border and some text to it. */ childwin = subwin(mainwin, height, width, y, x); box(childwin, 0, 0); mvwaddstr(childwin, 1, 4, "Move the window"); mvwaddstr(childwin, 2, 2, "with the arrow keys"); mvwaddstr(childwin, 3, 6, "or HOME/END"); mvwaddstr(childwin, 5, 3, "Press 'q' to quit"); refresh(); /* Loop until user hits 'q' to quit */ while ( (ch = getch()) != 'q' ) { switch ( ch ) { case KEY_UP: if ( y > 0 ) --y; break; case KEY_DOWN: if ( y < (rows - height) ) ++y; break; case KEY_LEFT: if ( x > 0 ) --x; break; case KEY_RIGHT: if ( x < (cols - width) ) ++x; break; case KEY_HOME: x = 0; y = 0; break; case KEY_END: x = (cols - width); y = (rows - height); break; } mvwin(childwin, y, x); wrefresh(childwin); } /* Clean up after ourselves */ delwin(childwin); delwin(mainwin); endwin(); refresh(); return EXIT_SUCCESS; }
编译并运行如下:
示例输出:
$ cc -o curwin1 curwin1.c -lncurses
$ ./curwin1
图 03:使用 ncurses 进行基本窗口操作
请参阅此页面和GNU ncurses 项目主页以获取更多信息。
本篇文章是Linux GNU/GCC 编译器教程系列中的第10 篇(共13 篇)。继续阅读本系列的其余文章:
- Ubuntu Linux 安装 GNU GCC 编译器和开发环境
- Debian Linux 安装 GNU GCC 编译器和开发环境
- CentOS / RHEL 7:安装 GCC(C 和 C++ 编译器)和开发工具
- 在 Red Hat Enterprise Linux 5(RHEL)上下载并安装 C、C++ 编译器
- Mac OS X:使用 Xcode 安装 GCC 编译器
- 我的 Linux GNU C 或 GCC 编译器安装在哪里?
- 操作方法:在 Linux 中编译并运行 C/C++ 代码
- RHEL / CentOS Linux 安装核心开发工具 Automake、Gcc (C/C++)、Perl、Python 和调试器
- 如何在 Linux / UNIX / *BSD 下编译 C 程序并创建可执行文件
- 如何在 Linux 上安装 ncurses 库
- Linux 查找系统上安装或可用的编译器
- Linux 找出用于编译运行内核的 GNU gcc 编译器版本
- 如何在 Linux 或 UNIX 中查看 C 程序的输出