导航:首页 > 编程语言 > 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编程相关的资料

热点内容
小熊编程教程 浏览:908
word转换成pdf转换器免费下载 浏览:608
群体智能基本算法 浏览:370
可编程软件分为哪两种 浏览:340
格林什么app可以看 浏览:697
飞卢app仙侠热卖推荐怎么样 浏览:722
飞秋上传文件到共享文件夹 浏览:691
服务器的共享文件夹如何访问 浏览:232
复盛螺杆压缩机讲解 浏览:332
柱在基础插筋需要加密吗 浏览:80
51单片机中断寄存器 浏览:65
压缩文件后有病毒怎么办 浏览:618
苹果ipad怎么登安卓王者账号 浏览:862
街头足球服务器已满是什么意思 浏览:462
androidspeex回音消除 浏览:133
加密会议什么意思 浏览:34
ubuntu命令行联网 浏览:7
37选7中奖概率及算法 浏览:593
加密狗哪个版本好 浏览:619
cisco命令手册 浏览:502