本文下面附了一篇博文,描述了怎么编译minicom 和 ncurses ,结合自己交叉编译器的实际情况照做,基本可以编译出来可用的minicom。
但是我遇到的另外一种情况,将编译好的minicom拷贝到板子上运行的时候,即使按照下面博文的方法,将主机上的terminfo的拷贝到开发板上,同时正确设置了环境变量,我的开发板同样会显示No termcap entry for vt102。网上能搜索到的解决No termcap entry for vt102,基本就是拷贝主机的terminfo到开发板,别无其他,还有一篇博文是去修改ncurses/include/ncurses_cfg.h TERMINFO , TERMINFO_DIR 的定义,我都照做,还是不行。阳光总在风雨后,柳暗花明又一村,所谓的柳暗花明,总是在苦苦思索,没有一点门路的灵光忽现,不过大部分情况下并无灵光忽现,或者经验证之后不能解决问题。
闲话少讲,切入正题。我在按照博文里面将的,将主机的相关目录拷贝到板子上并设置了环境变量之后,仍然提示No termcap entry for vt102。万般无奈,在纠结了几天之后,又重拾该问题。我用locate命令 查找terminfo, 结果发现,另外一个同事专门为开发板编译的库下面也发现了terminfo, 灵光开始忽现,进去看看,和我主机的terminfo大不相同。试一试吧,原来我的板子上已经有了terminfo(开发环境是另外一个同时搭建的)。重新修改环境变量,指向开发环境中的terminfo, fuck,竟然可以运行了。
总结:之前,我将ncurses编译到我的交叉编译器下面,和交叉编译器的库混在一起。后来,将ncurses的库独立编译出来,发现ncurses库包含了terminfo,这个肯定是正宗的terminfo啊。
minicom移植并修改No termcap entry for vt102和无法退出问题
1、下载minicom ()和ncurses(http://directory.fsf.org/project/ncurses/)源代码。
minicom编译需要使用ncurses库,所以要先编译ncurse
2、编译ncurses,在源代码目录下创建m.sh,并且给予可执行权限,文件内容如下:
#!/bin/sh
PWD=`pwd`
export PATH=$PATH:/home/toolchains/arm-2009q1/bin
export CC=arm-none-linux-gnueabi-gcc
./configure CC=arm-none-linux-gnueabi-gcc \
--prefix=${PWD}/../target \
--host=arm-linux \
CPPFLAGS=-I/home/toolchains/arm-2009q1/arm-none-linux-gnueabi/include \
LDFLAGS=-L/home/toolchains/arm-2009q1/arm-none-linux-gnueabi/lib
make
make install
注:我的交叉编译工具在/home/toolchains/arm-2009q1下
执行m.sh后生成的库在代码目录同级目录target下
3、编译minicom,在源代码目录下创建m.sh,并且给予可执行权限,文件内容如下:
#!/bin/sh
PWD=`pwd`
export PATH=$PATH:/home/toolchains/arm-2009q1/bin
#./configure CC=arm-none-linux-gnueabi-gcc --prefix=${PWD}/../target --host=arm-linux CPPFLAGS=-I${PWD}/../../ncurse/target/include LDFLAGS=-L/home/toolchains/arm-2009q1/lib LDFLAGS=-L${PWD}/../../ncurse/target/lib --enable-cfg-dir=/etc/minicom/
make
make install
注:我的交叉编译工具在/home/toolchains/arm-2009q1下,ncurse库文件目录需要根据实际情况修改
执行m.sh后生成的库在代码目录同级目录target下
4、拷贝minicom可执行文件到开发板上面使用。
问题:
1.提示No termcap entry for vt102错误
开发板上执行echo $TERM,提示vt102
找到PC上的linux(ubuntu 10.04)目录/lib/terminfo/v 目录及文件到开发板usr/share/terminfo下,并且开发板上设置环境变量TERMINFO=/usr/share/terminfo,命令为export TERMINFO=/usr/share/terminfo
如果主机上的terminfo还是出现 No termcap entry for vt102, 试一试编译ncurses库时生成的terminfo吧,我想既然那么多人都说拷贝主机上的terminfo,应该能解决了很大一部分人的问题,所以还是应该优先试一下主机上的terminfo,具体是什么原因,还有待深入研究一下
2.无法退出开发板上的minicom
输入CTRL-A会退出主机的minicom,而不会退出开发板上面的,要解决这个问题必须修改minicom源代码。
修改minicom源代码目录下/src/rwconf.c,找到struct param mpars[]的定义中的 { "^A", 0, "escape-key" }项,我改成了"^B"
3.无法保存配置文件
创建/etc/minicom文件夹并给予可读写权限