How To Install ncurses Library on a Linux

Ineed to compile an application with ncurses library and header files. How do I install install ncurses libs and header files on a Linux operating system? How do I write a simple hello world program using the ncurses and compile it on a Linux?

GNU ncurses is software API for controlling writing to the console screen under Unix, Linux and other operating systems. You can create text-based user interfaces (TUI) on a Linux or Unix-like system using ncurses library.

Tutorial details
Difficulty levelEasy
Root privilegesYes
RequirementsLinux terminal
CategoryPackage Manager
OS compatibilityAlma • Arch • Debian • Fedora • Mint • Pop!_OS • RHEL • Rocky • Stream • Ubuntu
Est. reading time3 minutes
Installing the ncurses library in Debian/Ubuntu Linux
You need to install the following two packages:
libncurses5-dev : Developer’s libraries for ncurses
libncursesw5-dev : Developer’s libraries for ncursesw
Open the Terminal application.
Type the following apt-get command to install ncurses header and libs:$ sudo apt-get install libncurses5-dev libncursesw5-dev
Fig.01: Install ncurses library using apt-get Fig.01: Install ncurses library using apt-get
Installing the ncurses library in CentOS/RHEL/Scientific Linux 6.x/7.x+ and Fedora Linux 21 or older
You need to install the following package:
ncurses-devel : Developer’s libraries for ncurses
Open the Terminal application.
Type the following yum command to install ncurses header and libs:$ sudo yum install ncurses-devel
Fig.02: Install ncurses library using yumFig.02: Install ncurses library using yum
Installing the ncurses library in Fedora Linux 22.x+
You need to install the following package:
ncurses-devel : Developer’s libraries for ncurses
Open the Terminal application.
Type the following dnf command to install ncurses header and libs:$ sudo dnf install ncurses-devel
How do compile C program and use the ncurses library?
Create a test program called hello.c as follows:
#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; }
First, make sure you install GNU/GCC C compiler on a Linux:
CentOS / RHEL 7: Install GCC (C and C++ Compiler) and Development Tools
Debian Linux Install GNU GCC Compiler and Development Environment
To link to the ncurses library pass the -lncurses option to gcc/cc command:
$ cc -o output input.c -lncurses
$ cc -o hello hello.c -lncurses

Run it:
$ ./hello
Sample outputs:
Hello World! Press any key to exit …
Here is another program:
/*   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; }
Compile and run it as follows:
$ cc -o curwin1 curwin1.c -lncurses
$ ./curwin1

Sample outputs:

Fig.03: Basic window operations in action using ncursesFig.03: Basic window operations in action using ncurses
See this page and GNU ncurses project home page for more information.
This entry is 10 of 13 in the Linux GNU/GCC Compilers Tutorial series. Keep reading the rest of the series:Ubuntu Linux Install GNU GCC Compiler and Development Environment
Debian Linux Install GNU GCC Compiler and Development Environment
CentOS / RHEL 7: Install GCC (C and C++ Compiler) and Development Tools
Download and Install C, C++ Compiler on Red Hat Enterprise Linux 5 (RHEL)
Mac OS X: Install GCC Compiler with Xcode
Where is My Linux GNU C or GCC Compilers Are Installed?
HowTo: Compile And Run a C/C++ Code In Linux
RHEL / CentOS Linux Install Core Development Tools Automake, Gcc (C/C++), Perl, Python & Debuggers
HowTo Compiling C Program And Creating Executable File Under a Linux / UNIX / *BSD
How To Install ncurses Library on a Linux
Linux Find Out What Compilers Are Installed or Available On The System
Linux Find Out GNU gcc Compiler Version Used To Compile Running Kernel
Howto see output of C program in Linux or UNIX

Ineed to compile an application with ncurses library and header files. How do I install install ncurses libs and header files on a Linux operating system? How do I write a simple hello world program using the ncurses and compile it on a Linux? GNU ncurses is software API for…

Ineed to compile an application with ncurses library and header files. How do I install install ncurses libs and header files on a Linux operating system? How do I write a simple hello world program using the ncurses and compile it on a Linux? GNU ncurses is software API for…

Leave a Reply

Your email address will not be published. Required fields are marked *