1. 程式人生 > >四極管:關於'make menuconfig' requires the ncurses libraries的解決辦法和學習

四極管:關於'make menuconfig' requires the ncurses libraries的解決辦法和學習

make menuconfig 

*** Unable to find the ncurses libraries or the

 *** required header files.
 *** 'make menuconfig' requires the ncurses libraries.
 ***
 *** Install ncurses (ncurses-devel) and try again.

 ***


缺少ncurses libraries ,安裝,執行:sudo apt-get install libncurses*

下載:

Reading package lists... Done
Building dependency tree       
Reading state information... Done
Note, selecting libncurses5 for regex 'libncurses*'
Note, selecting libncurses-ruby1.8 for regex 'libncurses*'
Note, selecting libncurses-dev for regex 'libncurses*'
Note, selecting libncurses5-dev instead of libncurses-dev
Note, selecting libncurses-gst for regex 'libncurses*'
Note, selecting libncursesw5-dbg for regex 'libncurses*'
Note, selecting libncursesw5-dev for regex 'libncurses*'
Note, selecting libncurses-ruby1.9.1 for regex 'libncurses*'
Note, selecting libncurses-ruby for regex 'libncurses*'
Note, selecting libncurses5-dbg for regex 'libncurses*'
Note, selecting libncurses5-dev for regex 'libncurses*'
Note, selecting libncursesw5 for regex 'libncurses*'
The following extra packages will be installed:
  gnu-smalltalk gnu-smalltalk-common libgst7 libncurses-gst libncurses-ruby
  libncurses-ruby1.8 libncurses-ruby1.9.1 libncurses5-dbg libncurses5-dev
  libncursesw5-dbg libncursesw5-dev libreadline5 libruby1.8 libruby1.9.1
  libsigsegv0 ruby1.8 ruby1.9.1
Suggested packages:
  gnu-smalltalk-doc ruby1.8-examples rdoc1.8 ri1.8 ruby1.9.1-examples
  rdoc1.9.1 ri1.9.1 rubygems1.9.1
The following NEW packages will be installed:
  gnu-smalltalk gnu-smalltalk-common libgst7 libncurses-gst libncurses-ruby
  libncurses-ruby1.8 libncurses-ruby1.9.1 libncurses5-dbg libncurses5-dev
  libncursesw5-dbg libncursesw5-dev libreadline5 libruby1.8 libruby1.9.1
  libsigsegv0 ruby1.8 ruby1.9.1
0 upgraded, 17 newly installed, 0 to remove and 0 not upgraded.
Need to get 13.2MB of archives.
After this operation, 47.9MB of additional disk space will be used.
Do you want to continue [Y/n]? y
Get:1 http://us.archive.ubuntu.com/ubuntu/ lucid-updates/main libruby1.8 1.8.7.249-2ubuntu0.1 [1,454kB]
Get:2 http://us.archive.ubuntu.com/ubuntu/ lucid-updates/main ruby1.8 1.8.7.249-2ubuntu0.1 [24.1kB]
Get:3 http://us.archive.ubuntu.com/ubuntu/ lucid/universe libncurses-ruby1.8 1.2.4-2 [67.3kB]
Get:4 http://us.archive.ubuntu.com/ubuntu/ lucid/universe libncurses-ruby 1.2.4-2 [8,868B]
Get:5 http://us.archive.ubuntu.com/ubuntu/ lucid/universe libruby1.9.1 1.9.1.378-1 [2,955kB]
Get:6 http://us.archive.ubuntu.com/ubuntu/ lucid/universe ruby1.9.1 1.9.1.378-1 [27.0kB]
Get:7 http://us.archive.ubuntu.com/ubuntu/ lucid/universe libncurses-ruby1.9.1 1.2.4-2 [68.5kB]
Get:8 http://us.archive.ubuntu.com/ubuntu/ lucid/main libncurses5-dev 5.7+20090803-2ubuntu3 [1,564kB]
Get:9 http://us.archive.ubuntu.com/ubuntu/ lucid/main libncursesw5-dev 5.7+20090803-2ubuntu3 [485kB]
Get:10 http://us.archive.ubuntu.com/ubuntu/ lucid/main libreadline5 5.2-7build1 [132kB]
Get:11 http://us.archive.ubuntu.com/ubuntu/ lucid/universe libsigsegv0 2.5-3 [21.1kB]
Get:12 http://us.archive.ubuntu.com/ubuntu/ lucid-updates/universe libgst7 3.0.3-2ubuntu0.10.04.1 [307kB]
Get:13 http://us.archive.ubuntu.com/ubuntu/ lucid-updates/universe gnu-smalltalk 3.0.3-2ubuntu0.10.04.1 [658kB]
Get:14 http://us.archive.ubuntu.com/ubuntu/ lucid-updates/universe gnu-smalltalk-common 3.0.3-2ubuntu0.10.04.1 [1,176kB]
Get:15 http://us.archive.ubuntu.com/ubuntu/ lucid-updates/universe libncurses-gst 3.0.3-2ubuntu0.10.04.1 [76.4kB]
Get:16 http://us.archive.ubuntu.com/ubuntu/ lucid/main libncurses5-dbg 5.7+20090803-2ubuntu3 [1,958kB]
Get:17 http://us.archive.ubuntu.com/ubuntu/ lucid/main libncursesw5-dbg 5.7+20090803-2ubuntu3 [2,194kB]
Fetched 13.2MB in 1min 42s (129kB/s)                                        
Selecting previously deselected package libruby1.8.
(Reading database ... 128033 files and directories currently installed.)
Unpacking libruby1.8 (from .../libruby1.8_1.8.7.249-2ubuntu0.1_i386.deb) ...
Selecting previously deselected package ruby1.8.
Unpacking ruby1.8 (from .../ruby1.8_1.8.7.249-2ubuntu0.1_i386.deb) ...
Selecting previously deselected package libncurses-ruby1.8.
Unpacking libncurses-ruby1.8 (from .../libncurses-ruby1.8_1.2.4-2_i386.deb) ...
Selecting previously deselected package libncurses-ruby.
Unpacking libncurses-ruby (from .../libncurses-ruby_1.2.4-2_all.deb) ...
Selecting previously deselected package libruby1.9.1.
Unpacking libruby1.9.1 (from .../libruby1.9.1_1.9.1.378-1_i386.deb) ...
Selecting previously deselected package ruby1.9.1.
Unpacking ruby1.9.1 (from .../ruby1.9.1_1.9.1.378-1_i386.deb) ...
Selecting previously deselected package libncurses-ruby1.9.1.
Unpacking libncurses-ruby1.9.1 (from .../libncurses-ruby1.9.1_1.2.4-2_i386.deb) ...
Selecting previously deselected package libncurses5-dev.
Unpacking libncurses5-dev (from .../libncurses5-dev_5.7+20090803-2ubuntu3_i386.deb) ...
Selecting previously deselected package libncursesw5-dev.
Unpacking libncursesw5-dev (from .../libncursesw5-dev_5.7+20090803-2ubuntu3_i386.deb) ...
Selecting previously deselected package libreadline5.
Unpacking libreadline5 (from .../libreadline5_5.2-7build1_i386.deb) ...
Selecting previously deselected package libsigsegv0.
Unpacking libsigsegv0 (from .../libsigsegv0_2.5-3_i386.deb) ...
Selecting previously deselected package libgst7.
Unpacking libgst7 (from .../libgst7_3.0.3-2ubuntu0.10.04.1_i386.deb) ...
Selecting previously deselected package gnu-smalltalk.
Unpacking gnu-smalltalk (from .../gnu-smalltalk_3.0.3-2ubuntu0.10.04.1_i386.deb) ...
Selecting previously deselected package gnu-smalltalk-common.
Unpacking gnu-smalltalk-common (from .../gnu-smalltalk-common_3.0.3-2ubuntu0.10.04.1_all.deb) ...
Selecting previously deselected package libncurses-gst.
Unpacking libncurses-gst (from .../libncurses-gst_3.0.3-2ubuntu0.10.04.1_all.deb) ...
Selecting previously deselected package libncurses5-dbg.
Unpacking libncurses5-dbg (from .../libncurses5-dbg_5.7+20090803-2ubuntu3_i386.deb) ...
Selecting previously deselected package libncursesw5-dbg.
Unpacking libncursesw5-dbg (from .../libncursesw5-dbg_5.7+20090803-2ubuntu3_i386.deb) ...
Processing triggers for man-db ...
Setting up libruby1.8 (1.8.7.249-2ubuntu0.1) ...

Setting up ruby1.8 (1.8.7.249-2ubuntu0.1) ...
Setting up libncurses-ruby1.8 (1.2.4-2) ...
Setting up libncurses-ruby (1.2.4-2) ...
Setting up libruby1.9.1 (1.9.1.378-1) ...

Setting up ruby1.9.1 (1.9.1.378-1) ...
Setting up libncurses-ruby1.9.1 (1.2.4-2) ...
Setting up libncurses5-dev (5.7+20090803-2ubuntu3) ...
Setting up libncursesw5-dev (5.7+20090803-2ubuntu3) ...
Setting up libreadline5 (5.2-7build1) ...

Setting up libsigsegv0 (2.5-3) ...

Setting up libgst7 (3.0.3-2ubuntu0.10.04.1) ...

Setting up gnu-smalltalk (3.0.3-2ubuntu0.10.04.1) ...

Setting up gnu-smalltalk-common (3.0.3-2ubuntu0.10.04.1) ...
Setting up libncurses-gst (3.0.3-2ubuntu0.10.04.1) ...
Setting up libncurses5-dbg (5.7+20090803-2ubuntu3) ...
Setting up libncursesw5-dbg (5.7+20090803-2ubuntu3) ...
Processing triggers for libc-bin ...
ldconfig deferred processing now taking place

。。。學習下自己裝不上的到底是神馬東西。。

一第一章 NCURSES庫簡介
在使用電傳終端作為計算機輸出裝置的那個年代,電傳終端是和計算機分開放置的,並通過序列電纜連線。終端的配置通過傳送一系列位元組完成。所有的終端控制操 作:改變游標在螢幕上的位置,清除螢幕某一區域的內容,螢幕滾動,切換顯示模式,給文字新增下劃線,改變字元的外觀、顏色、亮度等等,也是通過這樣一系列 位元組實現的。由於這些連續的控制位元組以一個轉義字元“0x1B”(即ESC鍵)作為起始位元組,所以這種控制序列叫做轉義序列。即使在當今,我們也可以向終 端模擬程式傳送轉義序列,得到和當年電傳打字終端相同的顯示效果。

假設你想在終端(或終端模擬視窗)輸出一段彩色的文字,可以將以下這段轉義序列輸入到你的字元控制檯(或控制檯視窗):
echo "^[[0;31;40mIn Color"           

在 這裡 “^[” 就是所謂的轉義字元。(注意:“^[” 是一個字元,不是依次鍵入“^”和“[”字元。要輸出“^[”,必須按下Ctrl-V再按下ESC鍵)執行以上的命令,就應該可以看見“In Color”變為紅色了(譯者注:試更改轉義字元各分號間的引數,看看會有什麼結果)。以後輸出的文字資訊都是這樣的效果。 如果想返回原來的顏色設定可以使用以下的命令:
echo "^[[0;37;40m"                  

現在體會到這些神奇字元(轉移序列)的作用了嗎?然而這些奇怪的字元是不是很難理解呢?並且有時相同的轉義序列在不同的終端上會有不同的顯示結果。因此,UNIX的設計者發明了一種叫做 termcap的機制。
termcap 是一個列出特定終端的所有功能的文字檔案,並且給出了實現對應功能的轉義序列。然而在這種機制發明後的幾年中,逐漸被terminfo機制取代。程式設計師使 用terminfo時不用花過多的時間查閱termcap。只需讓程式查詢terminfo的資料庫就可得到控制字元,並將其傳送到終端或終端模擬程式。
1.1 NCURSES是什麼?
你可能會疑惑,引入的這些技術術語是什麼。假設在使用termcap或者terminfo的情況下,每 個應用程式都在訪問terminfo資料庫並且做一些必要的處理(比如傳送控制字元等等)。不久這些操作的複雜度將會變得難以控制。於是,curses誕 生了。curses 的命名是來自一個叫做 “cursor optimization”(游標最優化)的雙關語(譯者注:curses本身有詛咒的意思)。curses構成了一個工作在底層終端程式碼之上的封裝,並 向用戶提供了一個靈活高效的API(Application Programming Interface 應用程式介面)。它提供了移動游標,建立視窗,產生顏色,處理滑鼠操作等功能。使程式設計師編寫應用程式不需要關心那些底層的終端操作。

那 麼ncurses又是什麼?ncurses是最早的System V Release 4.0 (SVr4)中 CURSES的一個克隆。這是一個可自由配置的庫,完全相容舊版本的curses。簡而言之,它是一個管理應用程式在字元終端顯示的函式庫。當後面提到 curses的時候,同時也可以和NCURSES互換。
關於ncurses詳細的更新歷史可以查閱ncurses原始碼分發包中的NEWS檔案。Thomas Dickey是目前的維護人員。你可以通過[email protected]聯絡維護人員
1.2 我們可以用NCURSES做什麼?
ncurses 不僅僅封裝了底層終端功能,而且提供了一個相當穩固的工作框架(Framework)可以在字元模式下產生美觀的介面。它提供了一些建立視窗的函式。而它 的姊妹庫 Menu、Panel和Form則對curses基礎庫及進行了擴充套件。這些擴充套件庫通常都隨同curses一起發行。我們可以建立一個同時包含多個視窗 (multiple windows)、選單(menus)、面板(panels)和表單(forms)的應用程式。視窗可以被獨立管理,例如讓它滾動或者隱藏。
 
選單(Menus)可以讓使用者建立命令選項,方便使用者執行命令。而表單(Forms)允許使用者建立一些簡單的資料輸入和輸出的視窗。面板(Panels)是ncurses視窗管理功能的擴充套件,可以用它覆蓋或堆積視窗。
 
 以上這些就是ncurses的簡單介紹。在以後的章節裡,我們將詳細的介紹這些庫。
1.3在哪能得到它
現在你知道你可以用ncurses做什麼了吧。使用ncurses之前你必須先安裝它,通常在安裝作業系統(Unix/Linux)時它已被安裝。如果你的作業系統裡沒有ncurses,你可以通過以下的途徑安裝:
 
編譯ncurses包:
ncurses 可以從ftp://ftp.gnu.org/pub/gnu/ncurses/ncurses.tar.gz獲得。也可以通過GNU的FTP目錄: http://www.gnu.org/order/ftp.html 找到提供免費下載ncurses的站點。最新發布的穩定版本為:5.2 20001021.(譯者翻譯時已經有5.4版本的ncurses下載了)

tar檔案包中的README和INSTALL檔案是安裝ncurses庫的主要資料。通常是按以下方法安裝ncurses的:
tar zxvf  ncurses<version>.tar.gz        # 解壓縮並且釋放檔案包
cd ncurses<version>                    # 進入解壓縮的目錄(注意版本)
./configure                            # 按照你的系統環境製作安裝配置檔案
make                                # 編譯原始碼並且編譯ncurses庫
su root                                # 獲得root許可權
make install                            # 安裝編譯好的NCURSES庫
使用RPM安裝檔案:
可以在http://rpmfind.net 找到ncurses的RPM格式安裝包。可以在root模式下使用以下的命令安裝:
rpm –i <下載的RPM檔案>
1.4 本文件的寫作意圖和涵蓋範圍
這部文件的寫作目的是要成為一份ncurses以及子函式庫的綜合程式設計指南。我們將從一個簡單的“Hello World”程式開始,循序漸進的學習掌握ncurses各方面更復雜、高階的內容。因此假定讀者在此之前沒有使用ncurses庫的經驗。
 
1.5 關於文件中出現的程式
這 份文件中用到的所有程式已經被打包並壓縮成一個tar.gz檔案。可以在http://www.linuxdoc.org/HOWTO/NCURSES- Programming-HOWTO/ncurses_programs.tar.gz 下載到。以下是這個壓縮包解壓縮後的目錄結構:

ncurses
   |    
   |----> JustForFun                    -- just for fun 部分的程式    
   |----> basics                        -- 一些基礎部分的程式
   |----> demo                         -- make 之後的程式
   |       |
   |       |----> exe                 -- 一些已編譯的可執行示例程式
   |----> forms                       -- 和form 庫相關的程式
   |----> menus                      -- 和menus 庫相關的程式
   |----> panels                      -- 和 panels 庫相關的程式
   |----> Makefile                    -- 一級目錄的下的 Makefile
   |----> README                  -- 一級目錄下的 README 檔案包含程式說明。
   |----> COPYING                   -- 程式版權資訊文件。
 
這些目錄下包擴以下的檔案:
JustForFun
    |
    |----> hanoi.c                   -- 漢諾塔示例
    |----> life.c                   -- 生命遊戲
    |----> magic.c                   -- 數字幻方
    |----> queens.c                  -- 皇后問題
    |----> shuffle.c                 -- 智力拼圖
    |----> tt.c                      -- 一個非常簡單的打字練習程式
   basics
    |
    |----> acs_vars.c               -- 可選字元(ACS)變數示例
    |----> hello_world.c             -- 簡單的“Hello, World!”程式    
    |----> init_func_example.c       -- 初始化函式示例
    |----> key_code.c                -- 顯示鍵盤字元程式碼的程式
    |----> mouse_menu.c            -- 一個可以使用滑鼠訪問的選單
    |----> other_border.c             -- 展示與box()函式不同的顯示邊框的其它函式
    |----> printw_example.c          -- 一個非常簡單的使用printw()函式的例子
    |----> scanw_example.c           -- 一個非常簡單的使用getstr()函式的例子
    |----> simple_attr.c             -- 一個在螢幕上列印C源程式註釋的例子
    |----> simple_color.c            -- 一個簡單的演示顏色的例子
    |----> simple_key.c               -- 一個可以用方向鍵訪問的選單的例子
    |----> temp_leave.c              -- 一個演示臨時離開CURSES模式的例子
    |----> win_border.c              -- 展示視窗和邊框的例子
    |----> with_chgat.c              -- chgat()函式使用的例子
 
  forms
    |
    |----> form_attrib.c             -- 展示field屬性的用法
    |----> form_options.c            -- 展示field選項的用法
    |----> form_simple.c             -- 一個簡單的表單例子
    |----> form_win.c                -- 一個簡單的視窗和表單聯合使用的例子
 
  menus
    |
    |----> menu_attrib.c             -- 展示選單屬性的用法
    |----> menu_item_data.c          -- 展示 item_name() 等等函式的用法
    |----> menu_multi_column.c       -- 建立多列選單
    |----> menu_scroll.c             -- 展示選單滾動的示例
    |----> menu_simple.c             -- 一個用方向鍵控制選單的例子
    |----> menu_toggle.c             -- 建立多值選單和解釋 REQ_TOGGLE_ITEM
    |----> menu_userptr.c            -- 使用者指標的用法
    |----> menu_win.c                -- 選單和視窗結合的演示例子
    
  panels
    |
    |----> panel_browse.c            -- 通過 tab 瀏覽展示使用者指標的用法
    |----> panel_hide.c              -- 隱藏和取消隱藏面板的例子
    |----> panel_resize.c            -- 移動和改變面板大小的例子
    |----> panel_simple.c            -- 一個簡單的面板使用例子

perl
|---->01-10.pl                    --前10個例子的perl語言版

Makefile包含在一級主目錄裡。它將會把所有的程式編譯成可執行的檔案。並把這些檔案存在demo/exec目錄下面。你也可以選擇將其編譯到別的目錄下。每個目錄下都有一個README檔案詳細描述了每個目錄下的C源程式的內容。
 
對於每一個示例,我都給出了這些程式呼叫NCURSES目錄下相關檔案的路徑名。

如果你希望線上閱讀這些程式中某個單獨的程式,可以通過瀏覽器訪問一下網址:http://tldp.org/HOWTO/NCURSES-Programming-HOWTO/ncurses_programs/
所有以上釋出的程式都遵照和NCURSES相同的許可協議(MIT-Style),  這個協議使你可以做除了得到他們以外更多的事情。你可以更自由的使用它們。

3、用jade程式建立各種各式的文件,如果你想建立多頁的HTML文件:
jade -t sgml -i html -d 風格樣式表文件 NCURSES-Programming-HOWTO.sgml

如果需要PDF格式,首先要建立單頁的HTML文件:
jade -t sgml -i html -d風格樣式表文件 -V nochunks NCURSES-Programming-HOWTO.sgml > NCURSES-ONE-BIG-FILE.html

然後利用這份文件和htmldoc工具建立PDF文件:
htmldoc --size universal -t pdf --firstpage p1 -f 輸出的.pdf檔案全名 NCURSES-ONE-BIG-FILE.html

也可以用來生成PS文件:
htmldoc --size universal -t ps --firstpage p1 -f 輸出的.ps檔案全名NCURSES-ONE-BIG-FILE.html

詳細資訊請訪問LDP Author Guide (LDP 作者指南)可以獲得更多資訊,如果都失敗了,請和作者[email protected]聯絡,也可以聯絡譯者[email protected]

1.7 原文貢獻者
感謝Sharath([email protected])和Emre Akbas編寫了其中的一些段落。簡介部分最初由Sharath寫成。當重新寫這部分的時候飲用了他最初完成的部分。Emre幫忙編寫了printw()函式和scanw()函式部分。

Perl語言版示例程式的提供者Anuradha Ratnaweera([email protected])。

然 後是Ravi Parimi([email protected])。他是這個專案最初的實現者。在撰寫這份文件時,他對這份文件提供了很多的意見。並且在文 章撰寫完畢後耐心的校對了整份文件。他還在Linux和Solaris平臺上檢查過文中使用的每一個程式。你可以從他的註記中發現你的問題。
 
1.8遠景規劃
下面是正在進行或者將要進行的專案。如果你有新的專案或者想加入某個專案。請和Padala聯絡。
給最後講述form庫的一章增加更多的示例程式。(這個專案Padala正在進行)
準備一個演示程式展示文件中所有的示例。同時允許使用者通過程式描述展示這些示例。
讓使用者親自編譯並且察看這些程式。一個有對話方塊的使用者介面更好。(這個專案N.N.Ashok正在進行)
加入Debug資訊,使用 _trace,_tarcemouse 。
通過NCURSES庫中的函式訪問termcap或tremios
使使用者可以同時在兩個終端上工作。 在“其它特色”章節(Miscellaneous features)中增加一些東西。

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, distribute with modifications, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Except as contained in this notice, the name(s) of the above copyright holders shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization.