linux之家
linux之家-让学习更轻松

你的位置:首页>>linux常见问题>>red hat enterprise as 3+oracle 9.2.0.4.0 proc无法预编译

red hat enterprise as 3+oracle 9.2.0.4.0 proc无法预编译

发表时间:2007-9-24 上午 12:08:39浏览次数:

提问:red hat enterprise as 3+oracle 9.2.0.4.0 proc无法预编译

这些代码在unix环境下编译非常正常,移植到linux环境下始终proc预编译不过,
但cc一般的程序都能编译通过,
在网上查了所有的资料报以下错误是因为$ORACLE_HOME/precomp/admin下的pcscfg.cfg的配置问题,
但试了很多种配置方法都没有效果,而且$ORACLE_HOME/precomp有很多目录都跟网上描述的不一样,
比如:rdbms,plsql,oracore,network等目录在$ORACLE_HOME/precomp下根本找不到,
是否还需要安装什么oracle组件,还是我的配置有什么问题?
现在把我的程序所以配置贴上:
请大家帮帮忙
#############################################################
$ORACLE_HOME/precomp/admin下的pcscfg.cfg配置如下:
sys_include=(/usr/include,/usr/include/linux)
include=/opt/ora9/product/9.2/rdbms/public
include=/opt/ora9/product/9.2/rdbms/demo
include=/opt/ora9/product/9.2/plsql/public
include=/opt/ora9/product/9.2/otrace/public
include=/opt/ora9/product/9.2/plsql/include
include=/opt/ora9/product/9.2/precomp/syshdr
ltype=short
#################################################################
makefile配置如下:
WORKDIR=$(HOME)
INCLPATH=-I. -I$(HOME)/include -I$(ORACLE_HOME)/precomp/public
LIBPATH=-L$(WORKDIR)/lib -L$(ORACLE_HOME)/lib
BIN=$(WORKDIR)/bin
ARFLAGS=ruv
AR=ar
PROC=proc parse=none include=$(WORKDIR)/include $(ORACLE_HOME)/precomp/public
CC=cc
HSLIB=$(WORKDIR)/lib/hslib.a
ORALIB=-lclntsh -lcore9 -lm `cat $(ORACLE_HOME)/lib/sysliblist` -lm
PCLIBFILE=aaa
$(PCLIBFILE):
  $(PROC) [email=iname=$@.pc]iname=$@.pc[/email]
  $(CC) -c [email=$@.c]$@.c[/email] $(INCLPATH)
  $(AR) $(ARFLAGS) $(HSLIB) [email=$@.o]$@.o[/email]
  -rm [email=$@.o]$@.o[/email] [email=$@.c]$@.c[/email] [email=$@.lis]$@.lis[/email]
  echo "$@ Is Updated.."
#################################################################
aaa.pc代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include "message.h"
EXEC SQL INCLUDE aaa.h;
EXEC SQL INCLUDE SQLCA;
int     aaa()
{
        EXEC SQL BEGIN DECLARE SECTION;
  HS_DEFINE_INFO define;
         char syscode[2+1];
        EXEC SQL END DECLARE SECTION;
       
        memset(syscode,0,sizeof(syscode));
memset(&define,0,sizeof(HS_DEFINE_INFO));
 
EXEC SQL select * INTO :define
  FROM hs_define_info
  WHERE c_sys_code=''1'';
        return(0);
}
#################################################################
aaa.h代码如下:
#ifndef AAA_H
#define AAA_H
#define SQLCODE         (sqlca.sqlcode)
#define SQLNOTFOUND     (1403)
#define SQLNULL         (-1405)
typedef struct _hs_define_info{
int i_sys_serial;
char c_sys_code[2+1];
char c_sys_name[40+1];
char c_host_name[20+1];
char c_comm_para[40+1];
char c_mac_mode[1+1];
char c_sign_flag[1+1];
char c_sign_date[8+1];
char c_sign_time[6+1];
char c_main_key[16+1];
char c_work_key[16+1];
char c_comment[80+1];
}HS_DEFINE_INFO;
#################################################################
make aaa报错如下:
proc parse=none include=/home/hmfms/include /opt/ora9/product/9.2/precomp/public iname=aaa.pc
Pro*C/C++: Release 9.2.0.4.0 - Production on Tue Aug 7 13:23:21 2007
Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.
System default option values taken from: /opt/ora9/product/9.2/precomp/admin/pcscfg.cfg
Syntax error at line 13, column 4, file aaa.pc:
Error at line 13, column 4 in file aaa.pc
                        HS_DEFINE_INFO define;
...1
PCC-S-02201, Encountered the symbol "HS_DEFINE_INFO" when expecting one of the f
ollowing:
   auto, char, const, double, enum, extern, float, int, long,
   ulong_varchar, OCIBFileLocator OCIBlobLocator,
   OCIClobLocator, OCIDateTime, OCIExtProcContext, OCIInterval,
   OCIRowid, OCIDate, OCINumber, OCIRaw, OCIString, register,
   short, signed, sql_context, sql_cursor, static, struct,
   typedef, union, unsigned, utext, uvarchar, varchar, void,
   volatile, a typedef name, a precompiled header, exec oracle,
   exec oracle begin, exec, exec sql, exec sql begin,
   exec sql end, exec sql type, exec sql var, exec sql include,
The symbol "exec," was substituted for "HS_DEFINE_INFO" to continue.
Error at line 0, column 0 in file aaa.pc
PCC-F-02102, Fatal error while doing C preprocessing
make: *** [aaa] Error 1
#################################################################

不知道是哪里出错了,请各位高手大侠帮我诊断诊断,多谢了!!!

解决办法:

通过提示,貌似好像是HS_DEFINE_INFO define声明的类型不对。。。
仅仅只能看出来这么多,纯属菜鸟观点,如有错误,请尽量嘲笑偶。呵呵。。

此类型定义在aaa.h内
读者体会
暂无回复
姓名:
评论内容:
     
热点导读
LINUX + ORACL
Linux系统高负载 My
Linux系统高负载 My
Linux系统高负载 My
Linux系统高负载 My
RHCE实战考试经验
RHCE--实力的最终测试
如何备考RHCE
RHCE应考指南
Linux相关的四个认证
国家Linux技术水平认证
CSIP对其在国家Linu
使用Linux做Radiu
Linux认证基本知识介绍
Oracle数据库开发(二
红帽Linux获美国政府最
Linux操作系统安全配置
如何用Linux Live
物理隔离 Linux如何贯
用SRP建立安全的Linu
Linux安全攻略 了解系
Linux安全攻略 服务器
微软要用数据证明Vista
用LVS在Linux上搭建
Linux操作系统安装VM
下载工具介绍 aMule在
Linux操作系统中安装E
Linux操作系统下网络互
Linux应用问答系列之硬
Linux系统下设置用户登
Copyright 2006-2007 linux77.com Inc. All Rights Reserved
Emai:skyzznj@126.com