1

我有一个为 Informix 数据库正常运行的应用程序。但现在我希望它也为 Oracle 编译它。应该在下面显示的为 Informix 正常运行的 makefile 中进行哪些更改?

ESQL:=esql
CFLAGS:=$(CFLAGS) -DSOLARIS
PROCFLAGS:=$(PROCFLAGS) -DSOLARIS
HEADERS= $(HOME)/tmiD/headers
target = $(HOME)
CC=gcc

%.o :%.ec ; $(ESQL) -I$(HEADERS) -c $(CFLAGS) -DINFORMIX -EDINFORMIX -I/usr/local/include $<

%.o :%.c ; $(CC) -I$(HEADERS) -c $(CFLAGS) $<

MAKEC= mv $(target)/$(@F) $(target)/$(@F).old; \
$(ESQL) -DINFORMIX -EDINFORMIX \
$^ $(CFLAGS) -lnsl -L $(target) \
-o $(target)/$(@F)

$(target)/%:%.o  $(CLIBFILES); $(MAKEC)
%:%.o  $(CLIBFILES); $(MAKEC)

all: a tw_interface clean

tw_interface: tcp.o trace.o global.o rmi.o License.o purge.o libswx.a

ap: tcp.o trace.o global.o rmi.o License.o purge.o

clean:
        -rm tcp.o trace.o global.o rmi.o purge.o License.o\
         trace.c global.c rmi.c
a:
        -rm tw_interface

我对这些东西很陌生。所以请帮助我。

先感谢您。

4

2 回答 2

0

我认为 Pro*C 预编译器是用“proc”调用的,所以第一行

ESQL:=esql

应该成为

PRO_C:=proc

看起来 Pro*C 文件通常具有 .pc 文件扩展名。假设您的 Pro*C 文件与 Informix *.es 文件略有不同,并且您将使用 .pc 扩展名创建它们,那么这一行

%.o :%.ec ; $(ESQL) -I$(HEADERS) -c $(CFLAGS) -DINFORMIX -EDINFORMIX -I/usr/local/include $<

会成为

%.o :%.pc ; $(PRO_C) CONFIG=proc_c_config.txt -I$(HEADERS) -c $(CFLAGS) -I/usr/local/include $<

上面的行有“proc_c_config.txt”,这是一个要创建的文件,用于放置任何所需的 Pro*C 选项。如果除了默认值之外没有其他需要的选项,则可以删除该部分。

$(ESQL) -DINFORMIX -EDINFORMIX \

会成为

$(PRO_C) CONFIG=pro_c_config.txt \

他们在这里谈论Pro*C 选项

于 2012-09-07T16:23:34.243 回答
0

嗯....你说你对这些东西很陌生。

如果您不是经验丰富的程序员,那么重写 Makefile 是一项非常重要的练习。

但是,如果您想尝试一下,我建议您首先在您的 ORACLE_HOME 中安装 Pro*C 演示。一旦完成,并且您已经验证它,通过构建示例 Pro*C 程序,我建议使用 demo_proc.mk 生成文件(将与演示程序一起安装)作为模板来转换生成文件。

另外,请注意,我对 Informix 一无所知,但代码本身可能需要转换为 Pro*C,因为我假设 Informix 有一些其他预编译器,或者用于数据库访问的备用库集。

希望有帮助。

于 2012-09-07T08:28:40.157 回答