Как установить ncurses в ubuntu
Рассматривать использование 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 очень просто. Для этого откроем терминал и напишем:
Всё. Библиотека установлена и теперь мы готовы писать код.
Привет, мир! (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?
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.
Читайте также: