编译时报错:PCC-S-02015, unable to open include file
Pro*C/C++: Release 10.2.0.1.0 - Production on 星期四 8月 11 07:25:27 2016
Copyright (c) 1982, 2005, Oracle. All rights reserved.
System default option values taken from: /u01/app/oracle/product/10.2.0/db_1/precomp/admin/pcscfg.cfg
Error at line 33, column 10 in file /usr/include/string.h
#include <stddef.h>
.........1
PCC-S-02015, unable to open include file
Error at line 34, column 11 in file /usr/include/stdio.h
# include <stddef.h>
..........1
PCC-S-02015, unable to open include file
Error at line 31, column 10 in file /usr/include/bits/types.h
#include <stddef.h>
看到其中一句:
System default option values taken from: /u01/app/oracle/product/10.2.0/db_1/precomp/admin/pcscfg.cfg
打开这个文件,看到里面的内容如下:
[oracle@localhost admin]$ cat pcscfg.cfg
sys_include=(/ade/aime_rdbms_9819/oracle/precomp/public,/usr/include,/usr/lib/gcc-lib/i486-suse-linux/2.95.3/include,/usr/lib/gcc-lib/i386-redhat-linux/3.2.3/include,/usr/lib/gcc-lib/i386-redhat-linux7/2.96/include)
ltype=short
这里可以看到加载的lib为如下目录 “/usr/lib/gcc-lib/i386-redhat-linux/3.2.3/include”
那么我们来看下stddef.h都在哪些目录里面有:
[hello@localhost src]$ locate stddef.h
/usr/include/boost/pending/cstddef.hpp
/usr/include/linux/stddef.h
/usr/lib/bcc/include/stddef.h
/usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
/usr/lib/gcc/i386-redhat-linux/4.1.1/include/stddef.h
/usr/lib/gcc/i386-redhat-linux6E/4.4.6/include/stddef.h
/usr/lib/syslinux/com32/include/stddef.h
/usr/lib/syslinux/com32/include/bitsize/stddef.h
/usr/share/man/man0p/stddef.h.0p.gz
/usr/src/kernels/2.6.18-308.el5-PAE-i686/include/linux/stddef.h
从这里面可以看到,gcc的版本里面没有3.2.3,只有下面三种
/usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h
/usr/lib/gcc/i386-redhat-linux/4.1.1/include/stddef.h
/usr/lib/gcc/i386-redhat-linux6E/4.4.6/include/stddef.h
这里我们选择3.4.6,接下来修改下面这个文件:
/u01/app/oracle/product/10.2.0/db_1/precomp/admin/pcscfg.cfg
把gcc的版本改为3.4.6:【这里有个坑,因为locate时路径为/usr/lib/gcc/,而pcscfg.cfg里面的为/usr/lib/gcc-lib/】
[oracle@localhost admin]$ vi pcscfg.cfg
sys_include=(/ade/aime_rdbms_9819/oracle/precomp/public,/usr/include,/usr/lib/gcc-lib/i486-suse-linux/2.95.3/include, /usr/lib/gcc/i386-redhat-linux/3.4.6/include,/usr/lib/gcc-lib/i386-redhat-linux7/2.96/include)
ltype=short
~
保存之后,重新再去编译文件即可。
参考:
http://blog.csdn.net/fuyun10036/article/details/9357979
http://blog.csdn.net/pdw2009/article/details/5498092
http://blog.chinaunix.net/uid-20011314-id-1987607.html
http://blog.csdn.net/pdw2009/article/details/5498092