日期:2014-05-16  浏览次数:20751 次

xenix system v难题
因在xenix   system   V下有个串口通信的项目要做,不能更新cc编译器,因为此xenix   system   V系统与一个测试软件集成在一起,更新cc编译器,有可能使测试软件不能使用,危险系数很大,测试软件代码内部有许多cc编译命令,所以必须在原有的环境下编写串口通信程序,系统是很老的unix系统,对系统头文件进行搜索,发现系统中不存在stdlib.h头文件和termios.h,但是这两个文件是编写串口通信程序必须的,所以现在感觉要实现有点难度,后来在/usr/include/sys找到一个termio.h文件,与termios.h进行比较,主要在于一个结构不同
termio.h中的结构
struct   termio   {
unsigned   short c_iflag; /*   input   modes   */
unsigned   short c_oflag; /*   output   modes   */
unsigned   short c_cflag; /*   control   modes   */
unsigned   short c_lflag; /*   line   discipline   modes   */
char c_line; /*   line   discipline   */
unsigned   char _cc[NCC]; /*   control   chars   */

};
termios.h中的结构
struct   termios{
tcflag_t   c_iflag;   /*input   flags*/
tcflag_t   c_oflag;   /*output   flags*/
tcflag_t   c_cflag;   /*control   flags*/
tcflag_t   c_lflag;   /*local   flags*/
cc_t   c_cc[NCCS];   /*control   characters*/
};

char c_line; /*   line   discipline   */
line   discipline   是什么意思?

至于stdlib.h头文件,也不知道怎么弄了,拷了一个vc6.0中的stdlib.h文件进去,编译串行通信程序,系统提示如下错误:
/usr/include/stdlib.h:fatal   error21:bad   preprocessor   command   'error '
看来只有更新cc编译器,还是有另外好的方法,第一次做unix下项目,请高手指点



------解决方案--------------------
实在要用,就用sco unix吧,从xenix移植到sco应该不难。
------解决方案--------------------
要拷也要从UNIX或者Linux里面拷啊,怎么从VC6拷呢:-)
不过即使是从Linux拷也肯定不行,因为差别还是太大了。

一个解决方法是自己写一个stdlib.h,先为空,编译的时候却什么定义就从别的系统拷过来,一次拷缺少的那几行,只到没有错误为止。

至于termio,你可以在系统中找一下有没有文档,比如man termio,或者查看termio.h,看看有那些函数,man一下看看。