Linux下Oracle Pro*C 预处理错误
为了迎接这一波虚拟化浪潮,客户原有运行在Linux PC上的一套老的缴费系统需要迁移到虚拟机。
某一部分是在Linux下基于Oracle Pro*C开发,我要将这个程序迁移到CentOS5.4的VPS上面。
编译这个小程序时出现了这样一类错误:
1 Error at line 30, column 10 in file /usr/include/sched.h
2 #include <stddef.h>
3 .........1
4 PCC-S-02015, unable to open include file
5 Syntax error at line 201, column 37, file /usr/include/bits/sched.h:
6 Error at line 201, column 37 in file /usr/include/bits/sched.h
7 extern int __sched_cpucount (size_t __setsize, const cpu_set_t *__setp)
8 ....................................1
9 PCC-S-02201, Encountered the symbol "__setsize" when expecting one of the following:
由于是原有代码,所以肯定是编译环境问题。排查了半天,才发现是预处理程序的配置错误导致了无法找到正确的头文件。
这个配置文件存在于
${ORACLE_HOME}/precomp/admin/pcscfg.cfg
查找stddef.h文件的真正位置:
[~]$ locate stddef.h
/usr/include/linux/stddef.h
/usr/lib/gcc/i386-redhat-linux/4.1.1/include/stddef.h
将
/usr/lib/gcc/i386-redhat-linux/4.1.1/include/
加入到CFG文件中:
sys_include=($ORACLE_HOME/precomp/public,/usr/include,/usr/lib/gcc/i386-redhat-linux/4.1.1/include/)
重新编译,通过。