| 网站首页 | 新闻中心 | 系统安全 | 网络安全 | 安全技术 | 下载中心 | 安全365社区 |
安全365
收藏本站
设为首页
会员登录:
站内搜索: 新闻中心 系统安全 网络安全 安全技术 下载中心
| 系统安全首页 | 漏洞分析 | 入侵检测 | 升级补丁 | 安全配置 |
SCO UNIX到Linux操作系统的程序移植问题
SCO UNIX到Linux操作系统的程序移植问题
作者:未知 文章来源:天新网 点击数: 更新时间:2007-11-7 1:58:37
要求把一个原先运行在SCO Unix操作系统的柜面系统移植到Red Hat Linux AS平台上。现在好像有一个趋势,金融行业的的原先运行在SCO下的系统都准备迁移到LINUX下。

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

  一、SCO 的cc 与LINUX 的gcc的一些差别

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

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

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

  二、gdb的使用

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

  gdb 可执行程序

  b 设置断点

  r 运行程序

  c 端点后重新运行程序

  n 执行下一条语句

  s 进入到函数体内调试(相对于n)

  attach PID 调试正在运行的程序

  三、关于core文件

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

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

  设定方法如下:

  执行 ulimit -c 102400,可以把这个命令放在用户的登录shell里面,这样不用每次登录时重新设置了。

  使用“gdb 可执行程序名 core文件名”可以查看大致在什么地方程序出现core。

文章录入:郝丽    责任编辑:郝丽 
  • 上一篇文章: 没有了

  • 下一篇文章: 没有了
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
     
     
     
    Linux操作系统下修改IP、
    Linux下VI编辑器不能保存
    在VMware中Linux操作系统
    Linux下安装一系列与Jav
    在Linux中 如何将LCD的刷
    WinXP+Mac OS X+Linux的
    Linux/Unix操作系统处于
    Linux 系统用户账号管理
    Linux操作系统 终端代理
    Linux 知道:一般软件的
    站长邮箱:webmaster@anquan365.com
    联系电话:86-10-67634029 点击这里给我发消息

    Copyright © 2006-2008 www.anquan365.com 北京华安普特网络科技有限公司 版权所有