News:

SMF - Just Installed!

Main Menu

How To Install ncurses Library on a Linux

Started by Administrator, Jan 10, 2023, 09:31 AM

Previous topic - Next topic

Administrator

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 ncurse

Installing the ncurses library in Debian/Ubuntu Linux
sudo apt-get install libncurses5-dev libncursesw5-dev
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
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?
Quote#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 ...
/*
 
  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
QuoteThis 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
QuoteHow 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