Ubuntu上pro*c预编译时找不到stddef.h

今天在ubuntu 11.04上用proc预编译一个pc文件的时候刷刷地出了几屏错误信息,最前面的部分如下:


Pro*C/C++: Release 11.2.0.1.0 - Production on Thu Mar 15 22:07:26 2012

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

System default option values taken from: /opt/app/oracle/product/11.2.0/precomp/admin/pcscfg.cfg

Error at line 30, column 10 in file /usr/include/sched.h
#include
.........1
PCC-S-02015, unable to open include file
Syntax error at line 201, column 37, file /usr/include/bits/sched.h:
Error at line 201, column 37 in file /usr/include/bits/sched.h
extern int __sched_cpucount (size_t __setsize, const cpu_set_t *__setp)
....................................1
PCC-S-02201, Encountered the symbol "__setsize" when expecting one of the follow
ing:

   , )

看这个错误信息,一是找不到stddef.h,二是size_t未定义。

用locate命令查找stddef.h,可以找到如下stddef.h:

/usr/include/linux/stddef.h
/usr/lib/syslinux/com32/include/stddef.h
/usr/lib/syslinux/com32/include/bitsize/stddef.h
/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5/include/stddef.h
/usr/src/linux-headers-2.6.38-8/include/linux/stddef.h
/usr/src/linux-headers-2.6.38-8-generic/include/linux/stddef.h

没有在/usr/include下的,那就要看看pcscfg.cfg里面有没有包含上述的几个目录:

cat /opt/app/oracle/product/11.2.0/precomp/admin/pcscfg.cfg
sys_include=($ORACLE_HOME/precomp/public,/usr/include,/usr/lib/gcc-lib/x86_64-redhat-linux/3.2.3/include,/usr/lib/gcc/x86_64-redhat-linux/4.1.1/include,/usr/lib64/gcc/x86_64-suse-linux/4.1.0/include,/usr/lib64/gcc/x86_64-suse-linux/4.3/include)
ltype=short
define=__x86_64__
可以看出它包含了redhat, suse linux的路径,而ubuntu上有所不同。比较上面找到的记录stddefh的路径,第4个和原来包含的  redhat,suselinux的路径类似。 检查该stddef.h,也确实包含size_t的定义。因此就把sys_include 改为:

sys_include=($ORACLE_HOME/precomp/public,/usr/include,/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5/include)


再次预编译,不再有上面的错误。



你可能感兴趣的:(Oracle,C/C++)