SCO Unix操作系统到Linux的程序移植

系统 其他OS
现在好像有一个趋势,金融行业的的原先运行在SCO下的Unix操作系统都准备迁移到LINUX下。今天,我们就来讲解下这个问题。

Unix操作系统有很多值得学习的地方,这里我们主要介绍Unix操作系统中的SCO Unix操作系统到Linux操作系统的程序移植问题。

要求把一个原先运行在SCO Unix操作系统的柜面系统移植到Red Hat Linux AS平台上。现在好像有一个趋势,金融行业的的原先运行在SCO下的系统都准备迁移到LINUX下。

下面简要整理一下,迁移过程中的一些心得体会。

一、SCO Unix操作系统的cc 与LINUX 的gcc的一些差别

总的来说,linux的gcc编译器相对sco下的cc要严格许多。通过这次移植发现SCO Unix操作系统的cc对程序的要求实在不怎么严谨。举个例子,比如strcpy()函数应该是2个函数,如果你给他3个参数,编译也能通过。还有,如果一个函数的参数应该是传值,你给它传一个地址,cc也不会报错。

SCO Unix操作系统的cc与linux的gcc在有关空指针的处理上的差别是最明显的。比如,trcpy(),strncpy(),strcmp(),strncmp(),fclose()。在SCO上,如果参数有一个是空指针,程序不会core,但在LINUX下,这些函数只要有一个是空指针,程序运行过程中就会core。在移植过程中,我们发现只要程序运行过程中出现core,十有八九是因为空指针的问题。

因此,移植Unix操作系统的***步,我么就对上述常见的字符串操作函数,做了一层封装,然后用封装过的函数来全局替换原来的函数。

二、gdb的使用

由于以前没在liunx下写过程序,对gdb调试工具也没有使用过。这次移植还学会了gdb的一些基本调试步骤。

gdb 可执行程序
b 设置断点
r 运行程序
c 端点后重新运行程序
n 执行下一条语句
s 进入到函数体内调试(相对于n)
attach PID 调试正在运行的程序

三、关于core文件

在SCO Unix操作系统下,一般程序core时,都会在可执行目录下生成一个core文件,我们可以使用dbx 来查看程序的什么地方出现了core。

移植到LINUX下,一开始,程序core时,怎么都没有生成core文件。后来,才发现,需要人为设定core文件所允许的***值。如果没有设定,默认是0,也就不会生成core文件。

设定方法如下:

执行 ulimit -c 102400,可以把这个命令放在用户的登录shell里面,这样不用每次登录时重新设置了。
使用“gdb 可执行程序名 core文件名”可以查看大致在什么地方程序出现core

这样,我们就完成了对SCO Unix操作系统到Linux操作系统的程序移植的介绍。

【编辑推荐】

  1. 深谈使用Unix操作系统之后
  2. 学习笔记Unix操作系统系统进程
  3. 概述Unix操作系统环境文件
  4. Unix操作系统crontab的使用方法
  5. 详谈Unix操作系统作业调度
责任编辑:小霞
相关推荐

2010-04-09 11:32:07

Unix操作系统

2010-04-14 17:29:05

2009-12-02 14:50:28

操作系统

2010-04-29 14:08:38

Unix操作系统

2010-04-16 18:15:11

Unix操作系统

2010-04-19 12:47:39

Unix操作系统

2010-04-16 18:02:30

Unix操作系统

2010-04-15 14:40:26

Unix操作系统

2010-04-28 16:34:28

Unix操作系统

2010-04-13 12:27:44

Unix操作系统

2010-04-19 10:28:43

Unix操作系统

2010-04-09 11:11:34

Unix操作系统

2013-08-15 10:23:03

LinuxUnix操作系统

2011-04-12 11:01:48

LinuxUnix桌面

2023-05-11 20:15:36

2009-12-10 11:07:38

Linux操作系统

2010-04-30 17:53:29

2010-04-09 10:49:01

Unix操作系统

2010-04-28 19:11:29

Unix操作系统

2010-04-16 09:27:36

点赞
收藏

51CTO技术栈公众号