[linux] cursesライブラリのインストール --- undefined reference 'initscr'

■ターミナル制御APIのcursesライブラリについて

By User:Gortu (apple2history.org) [Public domain], via Wikimedia Commons


Ubuntuでcursesの導入で少しはまったので、備忘録にします。
まず、大雑把にcursesについて説明すると、

・curses
cursesは、ターミナルを制御するためのAPIで、POSIX準拠のUNIXシステムで動作します。

・conio
MS-Windowsでの<conio.h>に相当する機能を持ちますが、関数などは異なるので互換性はありません。(しかし、getch()など同じ名前のものもあり、紛らわしい。)

・ncurses
curses:ncursesはちょうど、UNIX:Linuxに似ていて、cursesのGNU versionみたいです。

linux上のCからcursesライブラリを使う場合
#include <curses.h>

と記述します。

■curses.hがみつからない(apt-get)

はじめ<curses.h>がincludeパスになかったので
いろいろ探しましたが、
$sudo apt-get install libcurses-*
$sudo apt-get install build-essentials
$sudo apt-get install libncurses5-dev
などをしている間になんか見つかるようになりました。

■undefined reference 'initscr'(linkオプション)

実行ファイルを作るときには、例えば
$gcc example.c -o example -lcurses
としてライブラリをリンクする必要があります。
(-lcursesが、libcurses.aをリンクするオプション)

■内容(「BOOK」データベースより)
cursesとは、Cのプログラムから端末のディスプレイ画面を制御するために用意されているUNIXライブラリのことを指している。本書は、読者がcuresesライブラリを使ってCプログラムを書くときの助けとなるべく書かれたものである。