centos安装zhcon

来源:互联网 发布:存款70万算有钱吗 知乎 编辑:程序博客网 时间:2024/05/21 17:08

想让文字虚拟终端支持中文,尝试安装zhcon,装得心力憔悴,记录一下。本机centos6.5。

先下载zhcon-0.2.5.tar.gz和zhcon-0.2.5-to-0.2.6.diff.gz,链接http://sourceforge.net/projects/zhcon/files/。

解压zhcon-0.2.5.tar.gz,假设tar xzvf zhcon-0.2.5.tar.gz -C zhcon。在zhcon/zhcon0.2.5下执行zcat ../zhcon-0.2.5-to-0.2.6.diff.gz | patch -p1(我把zhcon-0.2.5-to-0.2.6.diff.gz复制到zhcon目录下了。

在zhcon-0.2.5目录下,执行./configure。

到此都挺顺利,然后make,开始报错。

1.make,报错:fblinear4.cpp:75: 错误:‘memset’在此作用域中尚未声明。这是少include头文件了……在src/display下的fblinear4.app中插入一行#include <cstring>,ok,无法理解怎么会有这种错误。

2.make,报错:fblinear8.cpp:48: 错误:‘memset’在此作用域中尚未声明。跟上面的错误一样,在src/display下的fblinear8.cpp中插入一行#include <cstring>,ok.

3.make,报错:basefont.cpp:61: 错误:‘memset’在此作用域中尚未声明;basefont.cpp:80: 错误:‘memcpy’在此作用域中尚未声明。同上,在src下的basefont.cpp中插入一行#include <cstring>,ok.

4.make,报错:graphdev.cpp:133: 错误:‘abs’在此作用域中尚未声明;graphdev.cpp:216: 错误:‘memcpy’在此作用域中尚未声明;graphdev.cpp:225: 错误:‘memset’在此作用域中尚未声明;graphdev.cpp:241: 错误:‘memcpy’在此作用域中尚未声明;graphdev.cpp:243: 错误:‘memset’在此作用域中尚未声明。在src下的graphdev.cpp中插入行#include <cstring>,再定义个函数int abs(int dx) { return (dx <0?-dx:dx);}。

5.make,报错:window.cpp:54: 错误:‘memset’在此作用域中尚未声明;window.cpp:493: 错误:‘memset’在此作用域中尚未声明;window.cpp:508: 错误:‘memset’在此作用域中尚未声明;window.cpp:600: 错误:‘memcpy’在此作用域中尚未声明;window.cpp:601: 错误:‘memset’在此作用域中尚未声明。在src下的window.cpp中插入行#include <cstring>。

6.make,报错:winime.cpp:253: 错误:从‘char*’到‘unsigned int’的转换损失精度;winime.cpp:274: 错误:从‘char*’到‘unsigned int’的转换损失精度。这个可能是因为我的机器是64位机器的原因才会报这个错误。把src下winime.cpp中涉及到的unsigned int都改为unsigned long。

7.make,报错:zhcon.cpp:353: 错误:‘strlen’在此作用域中尚未声明;zhcon.cpp:381: 错误:‘strncmp’在此作用域中尚未声明;zhcon.cpp:459: 错误:‘strlen’在此作用域中尚未声明;zhcon.cpp:460: 错误:‘strlen’在此作用域中尚未声明。在src下的zhcon.cpp中插入一行#include <cstring>。

8.make,报错:inputmanager.h:92: 错误:‘fd_set’没有命名一个类型。在src下的inputmanager.h中插入#include <sys/select.h>。

9.make,报错:inputclient.cpp:44: 错误:‘atoi’在此作用域中尚未声明。在src下的inputclient.h中插入#include <cstdlib>。

10.make,报错:inputmanager.cpp:230: 错误:‘free’在此作用域中尚未声明。在src下的inputmanager.cpp中插入#include <malloc.h>。

11.make,报错:zhcon.cpp:63:18: 错误:term.h:没有那个文件或目录;zhcon.cpp:445: 错误:‘tgetent’在此作用域中尚未声明;zhcon.cpp:456: 错误:‘tgetstr’在此作用域中尚未声明。百度之,这是缺包了,缺ncurses,虽然在系统>管理>添加删除软件中可以搜到ncurses,但是没用,只好乱安一气,以root身份执行yum install ncurses ncurses-devel。这个问题就解决了。

12.make,再报错。居然提示undefined reference to tgetent和tgetstr,明明安装了呀,在term.h中确实可以找到它们的声明呀,怎么还报错,再百度之,好吧,还需要链接ncurses库,在src目录下找到Makefile文件,编辑一下找到LIBS=开头那行,添加-lncurses。

make,这次终于成功了。

make install。顺利完成。

Ctrl+Alt+F2进入文字虚拟终端,执行zhcon,提示can not open gbfont。BullShit。百度之,仍迷茫。尝试改一下/usr/local/etc/下的zhcon.conf中的gbfont=font/gb-16.bpsf为gbfong=/usr/local/lib/zhcon/font/gb-16.bpsf。再在文字终端中启动zhcon,提示segment有错,无奈,又把gbfont=这句给还原了,不料这个时候,在文字终端竟然进到zhcon中了,^_^。

由于许多linux默认字符编码是UTF-8,而zhcon的默认编码是gb2312,因此此时看中文目录还是乱码,只要退出zhcon,然后以zhcon --utf8启动,就可以了。

原创粉丝点击