在 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 文件:
=====================================================================================
函数
-
ER_Destructor(PG_ErrorInfo *self)
-
{
-
free(self);
-
}
修改为:
-
ER_Destructor(PG_ErrorInfo *self)
-
{
-
// free(self);
-
}
(2) 修改 descriptor.c 文件:
=====================================================================================
函数 void DC_Destructor(DescriptorClass *self)
第 6 行的 free(deschd->__error_message); 删除掉或者修改为:
free(&deschd->__error_message); ,
原内容:
-
void DC_Destructor(DescriptorClass *self)
-
{
-
DescriptorHeader *deschd = &(self->deschd);
-
if (deschd->__error_message)
-
{
-
free(deschd->__error_message);
-
deschd->__error_message = NULL;
-
}
修改成:
-
void DC_Destructor(DescriptorClass *self)
-
{
-
DescriptorHeader *deschd = &(self->deschd);
-
if (deschd->__error_message)
-
{
-
free(&deschd->__error_message);
-
deschd->__error_message = NULL;
-
}
(3) 修改 psqlodbc.h 头文件:
=====================================================================================
在 #define __PSQLODBC_H__ 下面加入:
-
#ifndef __FUNCTION__
-
#define __FUNCTION__ ((__func__))
-
#endif
(4) 修改 psqlodbc.c 文件:
=====================================================================================
找到函数 _fini(void) ,将函数名修改成 __fini(void)
找到函数 _init(void) ,将函数名修改成 __init(void)
step 2 : 编写编译初始化文件 build.sh , 内容如下:
=====================================================================================
-
./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) |