⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 chinese-cxterm-in-rh5.html

📁 学习linux的工具书
💻 HTML
字号:
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
   <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
   <meta name="Author" content="Edward Fu">
   <meta name="GENERATOR" content="Mozilla/4.05 [zh-CN] (X11; I; Linux 2.1.127 i686) [Netscape]">
   <title>Freesoft Linux FAQ -- 在Redhat5.0下编译cxterm</title>
</head>
<body>
发信人: BlueOcean (Blue),
信区: Linux
<br>标&nbsp; 题: CXterm5.0在RedHat5.0-下的编译解决方案
<br>发信站: BBS 水木清华站 (Fri Feb&nbsp; 6 13:29:38 1998)
<p>&nbsp;【 在 scaner (永远不变坏) 的大作中提到: 】
<br>∶ cxterm-5.0在redhat-5.0中无法成功编译,主要的
<br>∶ 原因是redhat5.0的libc是glibc,而include文件的
<br>∶ 结构也有很大变化。
<br>∶ 解决的办法是该改的地方就得改,反正不用考虑多
<br>∶ 平台编译,也就不用多考虑的很周全。凡是编译时
<br>∶ 遇到未定义的符号,就到/usr/include里去找相应
<br>∶ 的定义,再去改源程序。
<br>∶ 再说一句。main.c里的什么ECHO,C80,B9600什么的
<br>∶ 原来是定义在/usr/include/bsd/sgtty.h里的,
<br>∶ redhat-5.0是在/usr/include/tarmbits.h里。
<br>&nbsp;
<p>托suxm的福, 我也装了一个RedHat5.0, 觉得还可以, 不过include文件变化很大,
<br>更加地遵从POSIX标准了. 不过系统少了一个头文件, 即/usr/include/sys/termio.h
<br>其文件内容如下, (很简单, 以前的Linux都是有的)
<p>------8&lt;------8&lt;------8&lt;------
<p>/*
<br>&nbsp;* Added by Michael L. in compliance with SYSTEM V termio
<br>&nbsp;*/
<p>#ifndef _SYS_TERMIO_H
<br>#define _SYS_TERMIO_H
<p>#include &lt;termio.h>
<p>#endif&nbsp; /* _SYS_TERMIO_H */
<p>------>8------>8------>8------
<p>另外, 关于CXTERM的编译我的经验是只将cxterm的源码改写两处即可.
<p>1. main.c
<br>line 147:
<p>#ifdef USE_TERMIOS
<br>#include &lt;termios.h>
<br>/* this hacked termios support only works on SYSV */
<br>#define USE_SYSV_TERMIO
<br>#define termio termios
<br>#undef TCGETA
<br>#define TCGETA TCGETS
<br>#undef TCSETA
<br>#define TCSETA TCSETS
<br>#else /* USE_TERMIOS */
<br>/* #ifdef SYSV */&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;--- Here
<br>#include &lt;sys/termio.h>
<br>/* #endif */ /* SYSV */&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;--- Here
<br>#endif /* USE_TERMIOS else */
<p>现在大多数UNIX都是和SYSTEM V兼容的, 这样的改动可以保证在大多数情况下都适用.
<p>2. misc.c
<br>line984:
<p>char *SysErrorMsg (n)
<br>&nbsp;&nbsp;&nbsp; int n;
<br>{
<br>/*&nbsp;&nbsp;&nbsp; extern char *sys_errlist[]; */&nbsp;&nbsp;&nbsp;
&lt;--- Here
<br>&nbsp;&nbsp;&nbsp; extern int sys_nerr;
<p>&nbsp;&nbsp;&nbsp; return ((n >= 0 &amp;&amp; n &lt; sys_nerr) ? sys_errlist[n]
: "unknown error");
<br>}
<p>主要是gcc的类型检查比较严格, sys_errlist在stdio.h中已有定义, 也可以利用
<br>gcc的-traditional来不让gcc报错.
<p>觉得cxterm的编写一开始就没注意跨平台的移植性, 总是哪出了毛病就补哪.
有太多的
<br>不可移植的隐患, 需要整理一下了, :(
<p>--
<br>Buck barks in the darkness
<br>&nbsp;
<br>&nbsp;
<br>&nbsp;
<br>&nbsp;
<br>Su Baochen--LinuxMan wrote:
<p>> 宫博士,我也发现了这个问题,不过我是这样解决的,不知可否?
<br>>
<br>> Min Gong wrote in message &lt;35ABB0E8.CB88B0CC@roska.hut.fi>...
<br>> >今天在RH-5.1下重新编译cxterm-5.0遇到了问题。
<br>> >现在已经解决了,向大家报告如下:
<br>> >
<br>> >1,有一个系统头文件缺失,
<br>> >  /usr/include/sys/termio.h
<br>>
<br>> 我改成了/usr/include/sys/termios.h
<p>我那做法是为了照顾兼容性,在/usr/include/sys目录中应该有那个文件,不然还可能有别的软件有相同的问题。另外termio.h包含了两个文件,
<br>&lt;termios.h>和&lt;sys/ioctl.h>,在程序中如果出于别的原因已经包含了
<br>&lt;sys/ioctl.h>当然就没问题了否则就会有问题。
<p>>
<br>>
<br>> 因为我发现在/usr/include/sys/里没有termio.h,反而有一个termios.h,就试着改
<br>> 了。这样改了,也能行(我也改了你指出的下面的定义冲突的问题),不知是否走的
<br>> “正道”?
<br>>
<p>这个解决当然是正道。因为老的编译器的变量类型检查不严格,不会发现向说明为常量的变量中赋值的错误,常量说明被忽略,因而编译可以通过。
<p>新的编译器不允许这种行为,在语法和语意上当然是正确的了。不严格的
<br>表达方式当然应该修改为更为严格的表达。
<p>宫敏
<p>--
<br>----
<br>NT=No Thanks, WWW=World Wide Wait
<br>Does PnP mean "Plug and Pray"?
<br>&nbsp;
<br>&nbsp;
</body>
</html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -