понедельник, 20 июля 2009 г.

SLES + Oracle = -Pro*C


У тебя есть проблема, %user_name%.


Ты поставил Linux, Oracle, написал Pro*C программку и хочешь ее того, скомпилировать.

Для начала делаешь так:

rhit:~/src$ /oracle/10.2.0/bin/proc CODE=ANSI_C \
include=/home/user/src/
include \
include=/oracle/10.2.0/lib \
include=/usr/include \
ireclen=4800 oreclen=4800 select_error=no \
release_cursor=no hold_cursor=yes ltype=none \
cpp_suffix=c USERID=DB_USER/DB_USER_PWD@
CONNECT_STR \
SQLCHECK=SEMANTICS iname=program.pc

Результат несколько обескураживает:

Pro*C/C++: Release 10.2.0.4.0 - Production on Mon Jul 20 11:24:04 2009

Copyright (c) 1982, 2007, Oracle. All rights reserved.

System default option values taken from:
/oracle/10.2.0/precomp/admin/pcscfg.cfg


Error at line 33, column 11 in file /usr/include/stdio.h
# include stddef.h

PCC-S-02015, unable to open include file
Error at line 15, column 10 in file /usr/include/_G_config.h
#include stddef.h

С таким обязательно встретишься если поставишь относительно старый Oracle RDBMS (например 10.2) на относительно новый линух (например SLES11.1).

Решается проблема просто -- надо поправить файлик:
$ORACLE_HOME/precomp/admin/pcscfg.cfg

Там у тебя что-то типа:
sys_include=(/oracle/10.2.0/precomp/public,/usr/include,/usr/lib/gcc-lib/ia64-suse-linux/3.3.3/include,/usr/lib/gcc/ia64-suse-linux/4.1.0/include)
ltype=short

А должно быть что-то типа:

sys_include=(/oracle/10.2.0/precomp/public,/usr/include,/usr/lib/gcc/ia64-suse-linux/4.3/include)

ltype=short

Пути уточни, вряд ли у тебя они будут точно такие же.

Вся проблема из-за того, что десятый оракл еще ничего не знает ни про одиннадцатую сузи, ни про gcc4.3 (ты наверняка радовался и потирал ладошки, когда нагуглил про runinstaller -ignoreSysPrereqs) соответственно, не знает он и про правильный путь до гццшных инклудов.

Как-то так.


Комментариев нет:

Отправить комментарий