先介绍一下什么是 cce,如果大家用过DOS和DOS下的中文平台,那么这个Linux下的cce就相当于DOS中的UCDOS等中文平台。
Linux功能强大,尤其是控制台(console)下的命令对于系统管理和网络管理来说非常重要,可是以原代码方式编译安装软件还是很有些难度的。为了方便安装软件和所倚赖的软件包,Redhat发展了自己的rpm包,Debian也发展了deb包,Ubuntu则使用了新立德软件管理器,但是有些软件在特定版本下的Linux没有安装包可用,只能用原代码来编译,而这种安装方式要求使用者有一定的Linux编程经验,这个门槛可不低,这也是难倒很多用惯了 Windows的人的原因之一。
在控制台下以命令行运行软件的好处是快捷,可以完全脱离X-window。此外,真正的Linux高手是在控制台下练出来的。
Ubuntu10.04 LTS新立德软件包列表中含有zhcon,但下载安装后依然有很多的问题,看不到状态行,只有拼音输入法,无法切换半角和全角模式。我曾经在 CDLinux 0.4和Red Flag Linux 5下用过cce,感觉非常好,使我想起了当年使用UCDOS、天汇DOS和龙梦2000的美好岁月。
一方面要把自己练就成Linux高手,另一方面要好好回忆一下十几年前的美好岁月,我决定在Ubuntu 10.04 LTS下装cce。
安装过程远比想像的要复杂得多,不过当我安装好了之后,也在实践中学习了很多Linux知识。以后再用原代码安装就没这么困难了。在Ubuntu10.04下,一共需要打3个补丁外加手动修改一个文件才能编译安装。
cce 0.51 软件代码下载:
http://sourceforge.net/projects/cce2k/
将原代码包用以下命令解包:
代码: 全选
tar -xzvf cce-0.51-02132004-dist.tgz
该原代码是在gcc3下编译通过的,在gcc4下编译要作些修改,首先要下载补丁cce-gcc4.patch,以适合gcc4的编译。
cce-gcc4.patch下载地址:
http://bbs.linuxsir.org/attachment.php? ... 1143630302
http://cid-0c366edfd373452f.skydrive.li ... gcc4.patch
补丁下载后还要安装能供执行补丁的工具patch,运行如下命令:
代码: 全选
sudo apt-get install patch
补丁使用方法:
如果cce-gcc4.patch和cce-0.51目录平级(cce- gcc4.patch位于cce-0.51的父本目录中),执行命令:
代码: 全选
patch -p0<cce-gcc4.patch
代码: 全选
patch -p1<cce-gcc4.patch
用 vi或gedit打开cce-0.51/include/lrmi.h
在该文件的大段注释结束后和第一行正式代码前添加如下代码:
代码: 全选
#ifndef IF_MASK
#define IF_MASK X86_EFLAGS_IF
#endif
#ifndef IOPL_MASK
#define IOPL_MASK X86_EFLAGS_IOPL
#endif
#ifndef VIF_MASK
#define VIF_MASK X86_EFLAGS_VIF
#endif
#ifndef TF_MASK
#define TF_MASK X86_EFLAGS_TF
#endif
http://cid-0c366edfd373452f.skydrive.li ... lic/lrmi.h
经过修改后的文件虽然能够成功编译和安装,但是cce一运行就退出,没有任何用处,还需要另外两个补丁cce-0.51-hw.patch和cce-fb- vga.diff
这两个补丁缺一不可。
cce-0.51-hw.patch下载:
地址一
http://www.linuxsir.org/bbs/attachment. ... 1128493391
地址二
http://cid-0c366edfd373452f.skydrive.li ... 1-hw.patch
cce- fb-vga.diff:下载地址
http://cid-0c366edfd373452f.skydrive.li ... b-vga.diff
(可以不看以下括号内的内容,原因是原代码有问题,其中一个重要的修改是另一个头文件cce-0.51/include/fb.h
这个是 framebuffer帧缓冲的头文件,需要做如下改动,即修改/dev/fb/0为/dev/fb0,直接打补丁即可,不需要手工修改。只是列出出错的原因。
找到第48、49行:
代码: 全选
#define DEFAULT_FB "/dev/fb"
#define DEFAULT_FB_DEVFS "/dev/fb/0"
代码: 全选
#define DEFAULT_FB "/dev/fb"
#define DEFAULT_FB_DEVFS "/dev/fb0"
好了,现在就可以配置、编译和安装了,在cce-0.51目录下依次输入以下命令:
代码: 全选
./configure
sudo make
sudo make install
代码: 全选
kbd_mode -a
然后就可以输入cce了,但是且慢,在Ubuntu的中文环境下,国际标准的中文编码是UTF8,所以我们还要更改中文编码为UTF8,则输入:
代码: 全选
cce -filter utf8
然后你就可以用vi来写中文了。
本文就是用刚刚编译和安装好的cce在vi下写的!
我把所有修改好的cce原代码打包为:cce-0.51-02132004-dist-ubuntu-10.04.tar.gz,直接下载就可配置、编译和安装了,不需要再打补丁。
可在这里下载:
http://cid-0c366edfd373452f.skydrive.li ... .04.tar.gz
我同时在cce官网http://sourceforge.net/projects/cce2k/上传了集成补丁cce-0.51-02132004-dist-ubuntu-10.04.diff,针对原始发放包cce-0.51-02132004-dist.tgz
有问题请留言。
http://unixboy.blog.qhnews.com/article/157660.shtml
参考文献:
经验分享:成功在FC3下(UTF-8 local)下安装了cce[更新:支持FC4]
http://www.cnblogs.com/huqingyu/archive ... 04827.html
2010-11-13 12:36 编辑
本文针对32位下的环境编译、运行通过,关于在64位机下的编译和运行,请参考本人的另外回复:
你好,没想到几个月前的帖子又被顶回来了,谢谢关注。的确,我是在32位下的环境编译、运行通过的。我手头上没有64位的Linux机器。六月就有个网友给我发站内短信问是否只针对32位机器,现在随着64位机器的普及,看来这是个要解决的问题。我搜索了一下网络发现两个比较有针对性的网页,应该很有帮助,连接如下:
http://www.cyberciti.biz/tips/compile-3 ... linux.html
第二个针对性的网页:How to compile a 32-bit application using gcc on the 64-bit Linux version
by VIVEK GITE · 17 COMMENTS
I had to compile a 32-bit application using GNU gcc on the 64-bit version Linux.
Luckily gcc man page directed me to -m32 and -m64 option. These options generate code for a 32-bit or 64-bit environments.
=> The 32-bit environment sets int, long and pointer to 32 bits and generates code that runs on any i386 system.
=> The 64-bit environment sets int to 32 bits and long and pointer to 64 bits and generates code for AMD's x86-64 architecture.
You can pass -m64 or -m32 as follows
For 32 bit version:
$ gcc -m32 -o output32 hello.c
For 64 bit version :
$ gcc -m64 -o output64 hello.c
And output is :
$ ./output32
Output:
Long int size is 4 bytes long!
Now let us see 64 bit output:
$ ./output64
Long int size is 8 bytes long!
Sample code - hello.c:
#include <stdio.h>
int main(){
long z; printf("Long int size is %i bytes long!\n", sizeof(z)); return 0;
}
http://stackoverflow.com/questions/2500 ... lain-the-a
这里有重要的一句摘录:
As we know 64 bit processors are backward compatible with 32 bit processors. So, that also wouldn't be a problem. The problem arises because of differences in system calls & call mechanism in 64-bit OS & 32-bit OS.
因为我没有可以尝试的环境,还请你参照这两篇文章,无论成功与否把现象如上一帖一样发在这里,每个人的尝试和结果都很重要。人多力量大!你说呢?
2010.11.13.03.13pm -0500 修改
我很好奇如果你直接用我修改后的源码,不去修改basename函数的调用,仅修改configure后的gcc参数,然后make, make install是否成功?因为源代码是不需要修改的,64位向下兼容,所以32位代码应该有效,只是编译器的参数改为gcc -m32。
具体操作如下:
用我修改后的源码,
代码: 全选
./configure CC="gcc -m32"
sudo make
sudo make install
2010.11.21.04.08pm -0500 修改
64位机下的编译和运行
先安装32位的C语言库。
代码: 全选
sudo apt-get install libc6-dev-i386
代码: 全选
./configure CC="gcc -m32"
sudo make
sudo make install