在Linux下编译Oracle的ProC的问题

baoshen88 2008-08-19 03:58:21
OS是Fedora Core release 4 (Stentz),在当前目录下有一个XXX.mk和一个XXX.pc文件,
用make编译:
[oracle@localhost src]$ make -f XXX.mk
XXX.o
cc -c -Aa -g -I/u01/app/oracle/10.2.0/db_1/precomp/public XXX.c
<command line>:1:2: error: missing '(' after predicate
make: *** [XXX.o] Error 1

总是报这个错,但是在HP Unix下都是通过的,是不是在Linux下要做些什么修改?
请哪位大侠给指点一下.

XXX.mk的内容:
#include $(ORACLE_HOME)/precomp/lib/env_precomp.mk

# <83>R<83>}<83><93><83>h
CC = cc
RM = rm -f
CP = cp -p
AR = ar -r
PROC = proc
EXE = exec
MV = mv

# CC <83>I<83>v<83>V<83><87><83><93>
#CCOPT = +DA2.0W -Aa -g -D_HPUX_SOURCE -D_PROTOTYPES
#CCOPT = -Aa -g -DDEBUG -DERROR +DD64
#<8f>a<8a>C<97>p<82>E32bit
#CCOPT = -Aa -g +DD64
CCOPT = -Aa -g

# <83>f<83>B<83><8c><83>N<83>g<83><8a><90>Y<92>e[
BASEDIR = $(HOME)/batch/w/wha
BINDIR = $(BASEDIR)/bin/c
INCDIR = $(BASEDIR)/inc
LIBDIR = $(BASEDIR)/lib
SRCDIR = $(BASEDIR)/src/Whabtmm017B01
COMDIR = $(BASEDIR)/src/Whamm000B01
ORAINC = $(ORACLE_HOME)/precomp/public

# -L
ORACLE_LIBS = -L$(ORACLE_HOME)/lib\
-lclntsh

LIBS = -L/lib/hpux64

#-I
INCDIR = $(HOME)/tk/inc

INCLUDES = -I$(ORACLE_HOME)/precomp/public

#PROCFLAGS = include=$(INCDIR) sqlcheck=semantics
PROCFLAGS = include=$(INCDIR) sqlcheck=semantics userid=wha/wha

OBJS = Whabtmm017B01.o\
$(COMDIR)/src/Whamm000B01.o

SRCS = Whabtmm017B01.c

# exe
Whabtmm017B01.exe : $(OBJS)
@echo "Whabtmm017B01.exe"
$(CC) $(CCOPT) -o $@ $(OBJS) $(LIBS) $(ORACLE_LIBS) $(INCLUDES) -lm
$(MV) $@ $(BINDIR)/Whabtmm017B01.exe
$(CC) $(CCOPT) -o $@ $(OBJS) $(LIBS) $(ORACLE_LIBS) $(INCLUDES) -lm
$(RM) *.o

# cc
Whabtmm017B01.o : Whabtmm017B01.c
@echo "Whabtmm017B01.o"
$(CC) -c $(CCOPT) $(INCLUDES) Whabtmm017B01.c
# $(RM) Whabtmm017B01.lis

$(COMDIR)/src/Whamm000B01.o : $(COMDIR)/src/Whamm000B01.c
@echo "$(COMDIR)/src/Whamm000B01.o $(CC) -c $(CCOPT) $(INCLUDES) $(COMDIR)/src/Whamm000B01.c"
$(CC) -c $(CCOPT) $(INCLUDES) $(COMDIR)/src/Whamm000B01.c
# $(RM) Whabtmm000B01.lis

# proc
Whabtmm017B01.c : Whabtmm017B01.pc
@echo "Whabtmm017B01.c"
$(PROC) $(INCLUDES) $(PROCFLAGS) iname=Whabtmm017B01.pc
clean:
@echo "Cleaning ..."
rm -i -f $(OBJS) Whabtmm017B01.c *.lis Whabtmm017B01.exe core *.cod *.cud *.dcl *.old *.jis
@echo "done!"
...全文
142 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
baoshen88 2008-09-14
  • 打赏
  • 举报
回复
现在解决了,因为Make文件是64为HP_UX的,修改以后就可以了。
日常管理维护一个oracle数据库服务器的时,经常会碰到修改view,table结构的情况,而且由于oracle view,函数,存储过程等对象的相互关联的关系,经常会由于一个view,table,fun,proc的修改而导致相关的对象失效。而实施的时候,经常只会注意要修改的对象是否修改完成,往往忽略相关对象的失效问题,所以做了一个自动重新编译的脚本程序,目的是定期(10分钟)完成一次对所有对象的检查,如果有失效对象,则对其进行重新编译。 机制是:基于linux的crontab,定期执行下述脚本,对失效的对象,执行alter object_type object_name compile;语句,达到重新编译。 如果扩展该脚本,可以完成对失效的对象进行告警等管理的需要。 该脚本运行于oracle9i,linux 环境下面 #!/bin/sh nowdir=`pwd` #配置文件的生成日期 nowtime=`date '+%Y%m%d'` nowtime_h=`date '+%Y%m%d%H%M'` #脚本执行的目录 dmpdir=/oracle_script/auto_recompile #初始化参数 cd #执行oracle 相关的环境变量, . .bash_profile cd $dmpdir #下面取出失效的对象('TRIGGER','PROCEDURE','FUNCTION','VIEW), #并且去掉系统的对象,只针对用户自己部署的。 #如果有失效对象则完成alter sql语句。 rm -rf param.temp $ORACLE_HOME/bin/sqlplus -SILENT "/ as sysdba" <PROCEDURE','FUNCTION','VIEW') and a.status='INVALID' and a.owner not in ('SYS' ,'SYSTEM','OUTLN','U_SYSTEM'); spool off exit; eof # Start to backup oracle database param echo "-------------- Complete obj compile Started on `date` -------------" >>$dmpdir/do.log dofilelog="obj_compile"$nowtime_h'.log' $ORACLE_HOME/bin/sqlplus -SILENT "/ as sysdba" <> $dofilelog echo "-------------- Complete export End on `date` -------------" >>$dmpdir/do.log

23,125

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧