Chinaunix首页 | 论坛 | 博客
  • 博客访问: 823773
  • 博文数量: 137
  • 博客积分: 3477
  • 博客等级: 中校
  • 技术积分: 1409
  • 用 户 组: 普通用户
  • 注册时间: 2006-11-30 21:53
文章分类

全部博文(137)

文章存档

2024年(8)

2023年(10)

2022年(4)

2021年(10)

2020年(9)

2018年(1)

2017年(1)

2014年(4)

2013年(3)

2012年(12)

2011年(24)

2010年(2)

2009年(8)

2008年(6)

2007年(34)

2006年(1)

分类: Mysql/postgreSQL

2021-11-19 21:14:53

在 SCO OpenServer 6 D2M1 上编译 psqlodbc-13.02.0000 for PostgrSQL 14.1 驱动包
================================================================================================
说明:
psqlodbc 是 postgresql 在unix/linux 系统下的 odbc 驱动程序,该程序以源码的方式发布,在 linux 系统
上编译没有任何问题,在 SCO OpenServer 6 系统上经过简单修改后,也能很容易的编译程序,但是在运行时
会出现 coredump 的错误,经过反复查找,修改调试,最后的编译安装过程如下:




step 1 : 修改程序源代码
(1) 修改 environ.c 文件:
=====================================================================================
函数

点击(此处)折叠或打开

  1. ER_Destructor(PG_ErrorInfo *self)
  2. {
  3.       free(self);
  4. }

修改为:

点击(此处)折叠或打开

  1. ER_Destructor(PG_ErrorInfo *self)
  2. {
  3. //  free(self);
  4. }

(2) 修改 descriptor.c 文件:
=====================================================================================
函数 void    DC_Destructor(DescriptorClass *self)
第 6 行的 free(deschd->__error_message); 删除掉或者修改为: free(&deschd->__error_message); 
原内容:

点击(此处)折叠或打开

  1. void DC_Destructor(DescriptorClass *self)
  2. {
  3.         DescriptorHeader *deschd = &(self->deschd);
  4.         if (deschd->__error_message)
  5.         {
  6.                 free(deschd->__error_message);
  7.                 deschd->__error_message = NULL;
  8.         }

修改成:

点击(此处)折叠或打开

  1. void DC_Destructor(DescriptorClass *self)
  2. {
  3.         DescriptorHeader *deschd = &(self->deschd);
  4.         if (deschd->__error_message)
  5.         {
  6.                 free(&deschd->__error_message);
  7.                 deschd->__error_message = NULL;
  8.         }

(3) 修改 psqlodbc.h 头文件:
=====================================================================================
在 #define __PSQLODBC_H__ 下面加入:

点击(此处)折叠或打开

  1. #ifndef __FUNCTION__
  2. #define __FUNCTION__ ((__func__))
  3. #endif

(4) 修改 psqlodbc.c 文件:
=====================================================================================
找到函数 _fini(void) ,将函数名修改成 __fini(void)
找到函数 _init(void) ,将函数名修改成 __init(void)


step 2 : 编写编译初始化文件 build.sh , 内容如下:
=====================================================================================

点击(此处)折叠或打开

  1. ./configure --prefix=/opt/PostgreSQL/14.1/psqlodbc --with-unixodbc=/usr --with-libpq=/opt/PostgreSQL/14.1


step 3 :执行 build.sh , 进行编译环境初始化
=====================================================================================
# export ACCEPT_INFERIOR_RM_PROGRAM=yes
# sh build.sh



step 4 :编译并安装
=====================================================================================
# gmake
# gmake install
阅读(999) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~