導航:首頁 > 編程語言 > linuxncurses編程

linuxncurses編程

發布時間:2022-05-29 13:56:29

① 求linux環境下ncurses的安裝方法,要一部一部來的,不然不會,是一個新手

其實只有一步:

sudo apt-get installlibncurses5-dev


下面是回答擴展,哈哈:


  1. 問題狀況


一般情況下使用系統自帶的軟體管理器apt-get就可以安裝了(`sudo apt-get installncurses-devel`),但使用後卻出現下面的錯誤提示:

正在讀取軟體包列表... 完成

正在分析軟體包的依賴關系樹

正在讀取狀態信息... 完成

E: 未發現軟體包 ncurses-devel

再試了另一條命令`sudo apt-get installncurses`, 出現:

正在讀取軟體包列表... 完成

正在分析軟體包的依賴關系樹

正在讀取狀態信息... 完成

現在沒有可用的軟體包 ncurses,但是它被其它的軟體包引用了。

這可能意味著這個缺失的軟體包可能已被廢棄,

或者只能在其他發布源中找到

E: 軟體包 ncurses 沒有可供安裝的候選者

2. 解決方法

Linux幾乎每個發行版都會有'ncurses'及'ncurses-devel'的安裝包的,再根據上面第二條命令錯誤提示,「現在沒有可用的軟體包 ncurses,但是它被其它的軟體包引用了。」 可以判定Ubuntu軟體管理器服務端有作修改過。所以到UbuntuPackage archive(http://packages.ubuntu.com/)搜索是否存在該安裝包,用'ncurses-devel'作為關鍵字搜索,沒有任何結果。搜索'ncurses'出現了很多返回結果。根據每個返回搜索結果的說明可以發現在Ubuntu中'ncurses-devel'是以'libncurses5-dev'命名的。

# sudo apt-get installlibncurses5-dev (安裝過程沒有提示任何錯誤,安裝成功)

接著再試一下`make menuconfig`,可以正常進入內核配置了

② 求教linux高手,關於ncurses庫的delwin函數

curses庫的函數的含義: cbreak():調用cbreak函數後,除了"Del"和"Ctrl"鍵外,接受其他所有字元輸入。 raw()和cbreak()兩個函 數都可以禁止行緩沖(line buffering)。區別是:在raw()函數模式下,處理掛起(CTRLZ)、 中斷或退出(CTRLC) 等控制字元時,將直接傳送給程序去處理而不產生終端信號;而在 cbreak()模式下,控制字元將被終端驅動程序解釋成其它字元。 nl()/nonl():輸出時,換行是否作為回車字元。nl函數將換行作為回車符,而nonl函數相反。 noecho()/echo():關閉/打開輸入回顯功能。 intrflush(WINDOW *win, bool bf):win為標准輸出。當bf為true時輸入Break,快中斷的響應。但是,有可能會造成屏幕輸出信息的混亂。 keypad(WINDOW *win, bool bf):win為標准輸出。調用keypad函數後,將可以使用鍵盤上的一些特殊字元,如方向鍵,轉化成curses.h中的特殊鍵。 refresh():重繪屏幕顯示內容。在調用initscr函數後,第一次調用refresh函數會清除屏幕顯示。 希望能幫到你

③ 在linux下安裝ncurses

在你源碼目錄執行:
chmod u+rwx * -R或者直接 chmod 777 * -R

④ (已解決)求助:嵌入式linux下,如何把ncurses與framebuffer顯

補充信息:實現了framebuffer,但沒有上任何的gui,僅可以通過寫framebuffer刷圖片/繪圖。現在是想實現在設備上實現一些簡單的文本終端用於其他驅動的測試,所以選擇了ncurses。個人考慮是:感覺ncurses是基於終端設備的,是不是需要先實現一個虛擬終端在framebuffer上顯示,然後在此終端上運行相應的ncurses程序即可?這樣就不需要對ncurses做任何修改。這樣新的問題是:怎樣讓framebuffer運行終端?目前在小心求證,也求了解的高手們給個思路,謝謝!問題解決:1)framebuffer中有一個叫framebuffer console的模塊,把LCD驅動實現為標準的framebuffer,然後支持framebuffer console模塊,實現為一個tty設備。2)在framebuffer console中支持硬體設備中的按鍵輸入,可能要做一些按鍵映射的工作。3)寫一個載入應用的程序,把標准輸入輸出定向到相應的tty設備,並且設定一些必須的環境變數,如ncurses使用的TERM和TERMINFO等變數(具體作用請查《UNIX Linux下curses庫開發指南》)。4)通過載入程序,使用exec執行實現的ncurses應用即可。當然,因為ncurses是基於終端的,即使沒有framebuffer console,不需要輸出到lcd,通過遠程連接到終端(通過telnet/ssh等),也是一樣可以使用ncurses庫的,條件僅是增加TERMINFO的支持即可,應用部分的代碼可以完全不需要修改。 查看更多答案>>

⑤ linux內核沒有ncurses嗎

一般linux內核在編譯的時候是有ncurse的。如果沒有在命令行中輸入:
sudo apt-get install libncurses5-dev
make menuconfig
Ncurses是一個能提供功能鍵定義(快捷鍵),屏幕繪制以及基於文本終端的圖形互動功能的動態庫。
這就不難解釋為何執行make menuconfig命令需要ncurses了。

⑥ linux下的C語言編程需要什麼

一、工具的使用
1、學會使用vim/emacs,vim/emacs是linux下最常用的源碼編輯具,不光要學會用它們編輯源碼,還要學會用它們進行查找、定位、替換等。新手的話推薦使用vim,這也是我目前使用的文本編輯器。
2、學會makefile文件的編寫規則,並結合使用工具aclocal、autoconf和automake生成makefile文件。
3、掌握gcc和gdb的基本用法。掌握gcc的用法對於構建一個軟體包很有益處,當軟體包包含的文件比較多的時候,你還能用gcc把它手動編譯出來,你就會對軟體包中各個文件間的依賴關系有一個清晰的了解。
4、掌握svn/cvs的基本用法。這是linux,也是開源社區最常用的版本管理系統。可以去試著參加sourceforge上的一些開源項目。
二、linux/unix系統調用與標准C庫
系統調用應用軟體與操作系統的介面,其重要性自然不用說,一定要掌握。推薦學習資料為steven先生的UNIX環境高級編程(簡稱APUE)。
三、庫的學習
無論是在哪個平台做軟體開發,對於庫的學習都很重要,linux下的開發庫很多,我主要介紹一下我常常用到的一些庫。
1、glib庫
glib 庫是gtk+和gnome的基礎庫,並具是跨平台的,在linux、unix和windows下都可以用。glib庫對於linux平台開發的影響就像 MFC對windows平台開發的影響一樣,很多開源項目都大量的使用了glib庫,包括gimp、gnome、gaim、evolution和 linux下的集群軟體heartbeat.因為glib庫自帶有基本的數據結構實現,所以在學習glib庫的時候可以順便學習一下基本的數據結構(包括鏈表、樹、隊列和hash表)。
2、libxml庫
libxml是linux平台下解析XML文件的一個基礎庫,現在很多實用軟體都用XML格式的配置文件,所以也有必要學習一下。
3、readline庫
readline 庫是bash shell用的庫,如果要開發命令行程序,那麼使用readline庫可以減少很多工作量,比如bash里的命令行自動補全,在readline里就已經有實現,當然你也可以用自己的實現替代庫的行為。readline庫有很多網站介紹的,只要google一下readline就可以找到一堆了。
4、curses庫
curses 庫以前是vi程序的一部分,後來從vi里提取出來成為一個獨立的庫。curses庫對於編寫終端相關的程序特別有用,比如要在終端某一行某一列定位輸出,改變終端字體的顏色和終端模式。linux下的curses庫用的是GNU實現的ncurses(new curses的意思)。
5、gtk+和KDE庫
這兩個庫是開發GUI應用程序的基礎庫,現在linux下的大部份GUI程序都是基於這兩個庫開發的,對於它們 的學習也是很有必要的。
四、網路的學習

⑦ linux編譯內核步驟

一、准備工作
a) 首先,你要有一台PC(這不廢話么^_^),裝好了Linux。
b) 安裝好GCC(這個指的是host gcc,用於編譯生成運行於pc機程序的)、make、ncurses等工具。
c) 下載一份純凈的Linux內核源碼包,並解壓好。

注意,如果你是為當前PC機編譯內核,最好使用相應的Linux發行版的源碼包。

不過這應該也不是必須的,因為我在我的Fedora 13上(其自帶的內核版本是2.6.33.3),就下載了一個標準的內核linux-2.6.32.65.tar.xz,並且順利的編譯安裝成功了,上電重啟都OK的。不過,我使用的.config配置文件,是Fedora 13自帶內核的配置文件,即/lib/moles/`uname -r`/build/.config

d) 如果你是移植Linux到嵌入式系統,則還要再下載安裝交叉編譯工具鏈。

例如,你的目標單板CPU可能是arm或mips等cpu,則安裝相應的交叉編譯工具鏈。安裝後,需要將工具鏈路徑添加到PATH環境變數中。例如,你安裝的是arm工具鏈,那麼你在shell中執行類似如下的命令,假如有類似的輸出,就說明安裝好了。
[root@localhost linux-2.6.33.i686]# arm-linux-gcc --version
arm-linux-gcc (Buildroot 2010.11) 4.3.5
Copyright (C) 2008 Free Software Foundation, Inc.
This is free software; see the source for ing conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
註:arm的工具鏈,可以從這里下載:回復「ARM」即可查看。

二、設置編譯目標

在配置或編譯內核之前,首先要確定目標CPU架構,以及編譯時採用什麼工具鏈。這是最最基礎的信息,首先要確定的。
如果你是為當前使用的PC機編譯內核,則無須設置。
否則的話,就要明確設置。
這里以arm為例,來說明。
有兩種設置方法():

a) 修改Makefile
打開內核源碼根目錄下的Makefile,修改如下兩個Makefile變數並保存。
ARCH := arm
CROSS_COMPILE := arm-linux-

注意,這里cross_compile的設置,是假定所用的交叉工具鏈的gcc程序名稱為arm-linux-gcc。如果實際使用的gcc名稱是some-thing-else-gcc,則這里照葫蘆畫瓢填some-thing-else-即可。總之,要省去名稱中最後的gcc那3個字母。

b) 每次執行make命令時,都通過命令行參數傳入這些信息。
這其實是通過make工具的命令行參數指定變數的值。
例如
配置內核時時,使用
make ARCH=arm CROSS_COMPILE=arm-linux- menuconfig
編譯內核時使用
make ARCH=arm CROSS_COMPILE=arm-linux-

注意,實際上,對於編譯PC機內核的情況,雖然用戶沒有明確設置,但並不是這兩項沒有配置。因為如果用戶沒有設置這兩項,內核源碼頂層Makefile(位於源碼根目錄下)會通過如下方式生成這兩個變數的值。
SUBARCH := $(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ \
-e s/arm.*/arm/ -e s/sa110/arm/ \
-e s/s390x/s390/ -e s/parisc64/parisc/ \
-e s/ppc.*/powerpc/ -e s/mips.*/mips/ \
-e s/sh[234].*/sh/ )
ARCH?= $(SUBARCH)
CROSS_COMPILE ?=

經過上面的代碼,ARCH變成了PC編譯機的arch,即SUBARCH。因此,如果PC機上uname -m輸出的是ix86,則ARCH的值就成了i386。

而CROSS_COMPILE的值,如果沒配置,則為空字元串。這樣一來所使用的工具鏈程序的名稱,就不再有類似arm-linux-這樣的前綴,就相當於使用了PC機上的gcc。

最後再多說兩句,ARCH的值還需要再進一步做泛化。因為內核源碼的arch目錄下,不存在i386這個目錄,也沒有sparc64這樣的目錄。

因此頂層makefile中又構造了一個SRCARCH變數,通過如下代碼,生成他的值。這樣一來,SRCARCH變數,才最終匹配到內核源碼arch目錄中的某一個架構名。

SRCARCH := $(ARCH)

ifeq ($(ARCH),i386)
SRCARCH := x86
endif

ifeq ($(ARCH),x86_64)
SRCARCH := x86
endif

ifeq ($(ARCH),sparc64)
SRCARCH := sparc
endif

ifeq ($(ARCH),sh64)
SRCARCH := sh
endif

三、配置內核

內核的功能那麼多,我們需要哪些部分,每個部分編譯成什麼形式(編進內核還是編成模塊),每個部分的工作參數如何,這些都是可以配置的。因此,在開始編譯之前,我們需要構建出一份配置清單,放到內核源碼根目錄下,命名為.config文件,然後根據此.config文件,編譯出我們需要的內核。

但是,內核的配置項太多了,一個一個配,太麻煩了。而且,不同的CPU架構,所能配置的配置項集合,是不一樣的。例如,某種CPU的某個功能特性要不要支持的配置項,就是與CPU架構有關的配置項。所以,內核提供了一種簡單的配置方法。

以arm為例,具體做法如下。

a) 根據我們的目標CPU架構,從內核源碼arch/arm/configs目錄下,找一個與目標系統最接近的配置文件(例如s3c2410_defconfig),拷貝到內核源碼根目錄下,命名為.config。

注意,如果你是為當前PC機編譯內核,最好拷貝如下文件到內核源碼根目錄下,做為初始配置文件。這個文件,是PC機當前運行的內核編譯時使用的配置文件。
/lib/moles/`uname -r`/build/.config
這里順便多說兩句,PC機內核的配置文件,選擇的功能真是多。不編不知道,一編才知道。Linux發行方這樣做的目的,可能是想讓所發行的Linux能夠滿足用戶的各種需求吧。

b) 執行make menuconfig對此配置做一些需要的修改,退出時選擇保存,就將新的配置更新到.config文件中了。

⑧ Linux 腳本編寫 如何編寫一個腳本,修改已有文件中的內容

實現的方法如下:

1、第一步,打開命令控制台以找到要編輯的文件,執行命令ls來查看下面的一些文件,在下面有一個index.php文件,如下圖所示。

⑨ linux ncurses cbreak raw keypad

curses庫的函數的含義: cbreak():調用cbreak函數後,除了"Del"和"Ctrl"鍵外,接受其他所有字元輸入。 raw()和cbreak()兩個函 數都可以禁止行緩沖(line buffering)。區別是:在raw()函數模式下,處理掛起(CTRLZ)、 中斷或退出(CTRLC) 等控制字元時,將直接傳送給程序去處理而不產生終端信號;而在 cbreak()模式下,控制字元將被終端驅動程序解釋成其它字元。 nl()/nonl():輸出時,換行是否作為回車字元。nl函數將換行作為回車符,而nonl函數相反。 noecho()/echo():關閉/打開輸入回顯功能。 intrflush(WINDOW *win, bool bf):win為標准輸出。當bf為true時輸入Break,可以加快中斷的響應。但是,有可能會造成屏幕輸出信息的混亂。 keypad(WINDOW *win, bool bf):win為標准輸出。調用keypad函數後,將可以使用鍵盤上的一些特殊字元,如方向鍵,轉化成curses.h中的特殊鍵。 refresh():重繪屏幕顯示內容。在調用initscr函數後,第一次調用refresh函數會清除屏幕顯示。 希望能幫到你

閱讀全文

與linuxncurses編程相關的資料

熱點內容
delphi編程助手 瀏覽:761
電腦遇到伺服器問題怎麼辦 瀏覽:514
加工中心編程結束方法 瀏覽:295
了解什麼是web伺服器 瀏覽:138
面向對象的編程的基本特徵 瀏覽:717
php定時執行任務linux 瀏覽:786
php數組中刪除元素 瀏覽:724
螢石雲伺服器視頻 瀏覽:269
防火牆配置伺服器熱備的虛擬地址 瀏覽:188
linux安裝xdm 瀏覽:736
java計算12 瀏覽:249
大金空調擺動式壓縮機 瀏覽:453
新的雲伺服器如何設置首頁 瀏覽:687
javastring字元位置 瀏覽:197
銀河麒麟字體庫存在哪個文件夾 瀏覽:957
魔獸加丁伺服器的航空叫什麼 瀏覽:152
花冠改裝案例哪個app多 瀏覽:515
成績單app哪個好用 瀏覽:140
北美程序員vs國內程序員 瀏覽:181
php解析xml文檔 瀏覽:121