Как установить ncurses в ubuntu

Обновлено: 07.07.2024

Рассматривать использование PDcurses будем на примере Dev-Cpp . Если у вас ещё нет этой IDE, то бежим сюда, скачиваем, устанавливаем.

Получение PDcurses

PDcurses в формате .zip можно скачать тут.

Компиляция PDcurses

PDcurses распространяется в форме исходного кода. То есть перед использованием библиотеки её нужно скомпилировать. Чтобы это сделать нужен компилятор MinGW (который, как и PDcurses , является аналогом компилятора UNIX -систем, gcc ).

Первым делом распаковываем архив, к примеру в папку, куда вы установили Dev-Cpp , в моём случае это C:\Dev-Cpp\ . Лучше не прямо в эту папку, а, например, в папку . \Dev-Cpp\curses\ , так будет удобнее.

Для компиляции можно воспользоваться компилятором, который идёт вместе с Dev-Cpp , но у меня он неправильно компилировал эту библиотеку (не спрашивайте, не знаю почему). Поэтому я воспользовался сторонним MinGW -компилятором, скачанным из интернета (найдёте сами, если понадобится, не маленькие уже :)

Заходим в командную строку и набираем:

Эта команда добавит в path путь к папке bin вашего компилятора. Теперь идём в папку, куда вы распаковали архив с исходниками библиотеки и переходим в папку win32 . В этой папке находится makefile, который создан для упрощения сборки, его имя mingwin32.mak . Его нужно передать программе mingw32-make , чтобы она скомпилировала библиотеку. Делается это так:

После выполнения этой команды начнётся компиляция PDcurses , нужно немного подождать. После окончания компиляции в папке появятся два файла — pdcurses.a и panel.a , это статические библиотеки, предназначенные для компоновщика, они то нам и нужны.

Теперь мы должны перенести эти два файла в папку со статическими библиотеками вашего компилятора. Для Dev-Cpp это папка . \DevCpp\MinGW64\lib\ . Так же в папке, в которую вы распаковали PDcurses есть заголовочный файл curses.h . Его нужно перенести в папку с заголовочными файлами вашего компилятора. Для Dev-Cpp это папка . \Dev-Cpp\MinGW64\x86_64-w64-mingw32\include . Теперь PDcurses готова к использованию.

Тестирование PDcurses

Для проверки напишем программу, выводящую на экран «Hello, World!», начиная с координаты (5;5)

Для это создадим в Dev-Cpp проект Console Application (консольное приложение) и назовём его, к примеру, «curses».

Создадим файл main.cpp (можно называть как угодно) и напишем в нём:

Теперь нужно добавить библиотеку pdcurses.a . Для этого перейдём в Проект->Параметры проекта->Параметры->Добавить библиотеку . Выберем файл pdcurses.a из папки . \DevCpp\MinGW64\lib .

This post will guide you how to install ncurse library in Unix-like operating systems. How to use the ncurses library in your C program and then compile it on Linux system.

GNU ncurses is a programming library providing an application programming interface that allows the programmer to write text-based user interfaces in a terminal-independent manner. You can use the ncurses library to develop “GUI-like” application software that runs under a terminal emulator on Linux system.

Install Ncurses Library with Default Repository

You can install the Ncurses library with the default repository on the different Unix-like system.

For CentOS/RHEL Linux, you can use the yum command to install the following one package (ncurses-devel) on your system, type:

For Ubuntu/Debian Linux:

If you are using Ubuntu/Debian Linux, you can use the apt-get command to install the following two packages: libncurses5-dev libncursesw5-dev, type:

For Fedora Linux:

If you are using Fedora 22 Linux or the newer versions, you can use the dnf command to install the ncurses library, type:

For Arch-based Linux:

You can use the following command to install ncurses library, type:

Install Ncurses Library with Source code

You can use the source code to install the latest stable version of ncurses in your Linux system, just do the following steps:

According to the ncurses release notes, the latest version of nucrses is 6.1. so type the following command to get it to local disk:

Type the following command:

So far, the Ncurses library has been installed on your Linux system.

Compile C Porgram that call the ncurses library

Let’s write one C program called fio.c that call the ncurses library via vi/vim text editor under the command line interface in your Linux, and append the following line:

Compile this C program and then execute it, type:

Video: Install ncurses Library From Source

See Also:

Ncurses — это библиотека, предназначенная для управления вводом-выводом на терминал. Позволяет задавать экранные координаты и цвет выводимых символов. Это статья является переводом данного материала. Пишите в комментариях, если нашли ошибку или неточность в переводе.

Материал рассчитан в первую очередь, на пользователей Unix-подобных ОС. Тем не менее, для пользователей Windows есть клон библиотеки ncurses — PDcurses.

История

В стародавние времена все немногочисленные возможности терминалов (телетайп-терминалов) поддерживались с помощью последовательностей байт. Эти управляющие последовательности, обычно называемые escape -последовательностями, начинались со специального символа 0x1B . Отголоски того времени дошли и до нас. Сегодня мы можем сделать то же самое со своим терминалом (на самом деле с эмулятором терминала, но для краткости, здесь и далее, называемым терминалом), используя точно такую же технологию.

Рассмотрим пример. Допустим, вам захотелось написать строку «In color» красным цветом. Для этого напишем в терминале (работает только для UNIX-подобных систем!):

Первый символ является escape -символом («^[», догадайтесь сами какой HEX-код у этого символа). Чтобы набрать его в терминале нужно нажать CTRL+V , а затем ESC . Дальше набираете так, как есть.

Вывод цветного текста в терминале

Результат выполнения команды:

Тот же трюк можно провернуть и программно:

В С\C++ escape -символы задаются символом \ (к примеру, \n — переход на новую строку, \r — возврат каретки). Соответственно, чтобы загнать escape -символ 0×1B в поток, нужно вписать \x1B.

Представим, что вам захотелось в своей программе использовать различные цвета, чтобы программа выглядела красивее чем обычно. Не правда ли будет сложно запоминать значения каждых управляющих символов?

И к тому же, эти символы, скорее всего, различны для каждого типа терминала. Именно для того, чтобы избежать заучивания значения каждого символа, а также для написания кода, не зависящего от типа терминала, была придумана библиотека ncurses .

Что такое ncurses и с чем его едят?

ncurses — это клон оригинальной curses из System V Release 4.0 (SVr4), которая в свою очередь была улучшением классического curses из BSD (название произошло от «new curses»)

Но ncurses это не только обёртка над зависимыми от системы управляющими символами, это так же и хороший фреймворк для создания красивого пользовательского интерфейса в текстовом режиме. Библиотека содержит функции управления окнами и меню, а так же «библиотеку-сестру» panel , управляющую панелями.

Пример программы на Ncurses

Вот пример приложения, основанного на ncurses :

Разумеется, это не все возможности, предоставляемые этой библиотекой. По мере продвижения вперёд, мы увидим гораздо больше, не сомневайтесь :)

Установка ncurses

Установить ncurses очень просто. Для этого откроем терминал и напишем:

Всё. Библиотека установлена и теперь мы готовы писать код.

Привет, мир! (Hello world!)

Итак, добро пожаловать в мир ncurses . Перед погружением в библиотеку, напишем простую программу, которая скажет «Hello!» всему миру.

Чуть не забыл, чтобы компилировать программы, использующие библиотеку ncurses , нужно устанавливать флаг -lncurses :

Описание кода

ncurses.h

ncurses.h — заголовочный файл ncurses . В нём объявлены все функции и константы библиотек. Обязателен к подключению.

initscr()

Функция initscr() переводит терминал в curses -режим. Она чистит экран, выделяет память под необходимые данные для работы библиотеки, и инициализирует окно stdscr (об этом не сегодня, к сожалению). Вызов initscr() обязателен перед любым использованием ncurses . В некоторых случаях функция может завершиться неудачно, если не хватило памяти. Впрочем, такие ситуации маловероятны, учитывая ресурсы, предоставленные современным компьютерам и ресурсы, требуемые для нормальной работы библиотеки.

printw()

Функция printw() выполняет ту же роль что и printf() , и имеет точно такой же синтаксис. Почему используется именно printw() ? Потому что std::cout и printf() на работают в curses -режиме. В остальном эта функция полностью аналогична printf() . Для справки: ввод осуществляется при помощи функции scanw() (аналогично scanf() ).

refresh()

Функция printw() отправляет данные не напрямую на экран, а в так называемый буфер. Функция refresh() проверяет буфер и, если он не пуст, отправляет информацию на экран (обновляет только изменившиеся зоны экрана), она чем то схожа с flush() из stdio . Зачастую, её вызов не обязателен, но иногда без вызова этой функции можно получить странные ошибки.

getch()

Функция getch() , наверное, знакома всем по библиотеке conio.h . Так вот, это её полный аналог (даже чуть лучше, как мы увидим далее). Функция ожидает нажатие любой клавиши на клавиатуре и возвращает код этой самой клавиши.

endwin()

В конце не забывайте выйти из curses -режима, иначе, после завершения программы ваш терминал будет «странно» себя вести. Выходом из curses -режима занимается функция endwin() . Она очищает экран, освобождает память, которую выделяла initscr() и переводит терминал в нормальный режим (в тот, в котором он был до выполнения программы).

Here are the simple steps to download, configure, compile, and install ncurses on a Linux machine. I have tested these instructions on Debian/Ubuntu and CentOS Linux distributions but they should work on all Linux machines where compilers and make utility are installed. Please take a look at configuring Ubuntu Linux after installation to configure your Debian/Ubuntu Linux box for the required tools.

I downloaded and installed version 5.7.

Thats it. Now you can use the ncurses to download, compile, and install MySQL cli.

Did this tutorial help a little? How about buy me a cup of coffee?

Buy me a coffee at ko-fi.com

Please feel free to use the comments form below if you have any questions or need more explanation on anything. I recommend thoroughy testing on a production-like test system first before moving to production.

tags cloud

popular searches

Comments (write a comment):

Worked exactly as advertised, thank you for taking the time to document how to install ncurses for Debian/Ubuntu. Posted by: CBE on Oct 08, 2011

I got exactly what i wanted. Posted by: viswanath on Jul 26, 2012

ncurses no install. What do?

@Dhave: are you getting any error messages from any of the commands above? Posted by: shahryar on Feb 22, 2013

Will it work for CENTOS 64bit system? Posted by: S M shafiqul islam on Feb 25, 2014

Worked perfectly. thanks! Posted by: Abara on Mar 30, 2014

@S M: I haven't tested that yet but may be you can and share the results with us :) Posted by: Shahryar on Apr 08, 2014

Thanks really simplified example of how to download and install a package in linux Posted by: dhiraj on Dec 04, 2014

when i type make install then following error is coming

mkdir: cannot create directory ‘/opt/ncurses/man’: No such file or directory
make[1]: *** [/opt/ncurses/man] Error 1
make[1]: Leaving directory `/home/techmahindra/ncurses-5.7/man'
make: *** [install] Error 2 Posted by: apurva on Sep 21, 2015

@apurva: looks like a file permission issue.

Did you run 'make install' as root or some other user? Did you make sure /opt directory already exists? Posted by: geeksww on Oct 13, 2015

when i try make install
i too got similar error
make[1]: Entering directory '/home/ganeshkvvn/ncurses-6.0/man'
mkdir -p /opt/ncurses/share/man
mkdir: cannot create directory ‘/opt/ncurses’: Permission denied
Makefile:60: recipe for target '/opt/ncurses/share/man' failed
make[1]: *** [/opt/ncurses/share/man] Error 1
make[1]: Leaving directory '/home/ganeshkvvn/ncurses-6.0/man'
Makefile:113: recipe for target 'install' failed
make: *** [install] Error 2
even i tried in root user but doesn't works Posted by: ganesh kvvn on Jan 01, 2016

@ganesh: it clearly looks like a permission issue.

You need proper permissions to create a directory in /opt.

the sudo command for make install

sudo make install

or run it as 'root' user (if possible but not recommended). Posted by: shahryar on Feb 02, 2016

Shahryar. I followed the step as above, at the point of "make install" i too get the same error
make[1]: Entering directory '/home/csee1/adwayak1/ncurses-6.0/man'
mkdir -p /opt/ncurses/share/man
mkdir: cannot create directory �/opt/ncurses�: Permission denied
make[1]: *** [/opt/ncurses/share/man] Error 1
make[1]: Leaving directory '/home/csee1/adwayak1/ncurses-6.0/man'
make: *** [install] Error 2.
And i am not registered user on sudo. Hence cant use the sudo command Posted by: Adwaya Kulkarni on Feb 08, 2016

@Adwaya: Its the same error again

"/opt/ncurses" requires permission to be written to (including directory creation), so you need to make sure you have the permissions. A simple test would be creating a test directory in /opt

if it does not work then you need the right permission first. Posted by: Shahryar on Mar 14, 2016

Hi, I am installing ncurses5.7 in RHEL.

when I run make command following error occurs.

/usr/bin/ld: cannot find -lc
collect2: error: ld returned 1 exit status
make[1]: *** [tic] Error 1
make[1]: Leaving directory `/root/ncurses-5.7/progs'
make: *** [all] Error 2

Note - Before 8 months in same machine I was able to install ncurses successfully.

Читайте также: