在linux下运行.pc程序时,需要用到proc命令。
一般安装oracle时候都已经安装了pro*c,以下是Pro*C/C++的配置,以及链接到oracle实例。
在用户跟目录下
.bash_profile文件中
加入
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib:/usr/local/lib;
export LD_LIBRARY_PATH
用. ./.bash_profile运行配置文件,使得配置生效
2,修改文件$ORACLE_HOME/precomp/admin/pcscfg.cfg(新加入内容)
sys_include=/usr/lib/gcc-lib/i386-redhat-linux/3.2.3/include
至此,我们可以开始写pc源程序了
以下是一个链接本机oracle数据库的程序。
/*
login.pc
用户名:soft;密码soft;全局数据库名:mfo
*/
#include<stdio.h>
#include "sqlca.h"
EXEC SQL BEGIN DECLARE SECTION;
char *uid="soft/soft@mfo";
EXEC SQL END DECLARE SECTION;
int main()
{
EXEC SQL CONNECT :uid;
if(sqlca.sqlcode==0)
printf("connect success.../n");
else
printf("%s",sqlca.sqlerrm.sqlerrmc);
}
1,proc预编译
命令:proc login.pc
2,通过第一步生产login.c文件,现在就要通过g++编译源文件
命令:g++ -o login login.c -I $ORACLE_HOME/precomp/public/ -L $ORACLE_HOME/lib/ -L$(ORACLE_HOME)/precomp/lib -l clntsh
3,通过上一步生成login可执行文件。执行login
命令:
./login
结果显示connect success...,成功。。。。
=============================end=============================
在第一步出现如下错误时:
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>;
(此时,只要去掉#include<stdio.h>即可编译链接并运行)
可在编译时,加入命令parse=none,即proc login.pc parse=none
================================================================
在第二步出现如下错误时:
error while loading shared libraries: /oracle/product/10.2.0/lib/libnnz10.so: cannot restore segment prot after reloc: Permission denied
处理方法:
关闭SELINUX
Redhat Enterprise Linux中如何关闭SELinux?
红帽企业 Linux 4 包括了一个 SELinux 的实现。SELinux 代表了用户,程序以及进程间相互交流的主要变化。在这个发行版本中,SELinux 被默认安装并被开启使用。
在安装的过程中,您可以选择禁用 SELinux,或是设置它只记录警告信息,或是使用它的只在以下守护进程中有效的目标化策略:dhcpd、httpd、mysqld、named、 nscd、ntpd、portmap、postgres、snmpd、squid、syslogd
目标化策略在默认的情况下被启用。
红帽企业 Linux 4 使用在 ext2/ext3 文件系统上的扩展属性来支持 SELinux。这就意味着,当一个文件被写到默认挂载的 ext2/ext3 文件系统中时,一个扩展的属性也会被写入。
当系统有 红帽企业 Linux 4 和 红帽企业 Linux 2.1 双重启动的时候,这就可能会产生一些问题。红帽企业 Linux
2.1 内核不支持文件的扩展属性,当它遇到文件的扩展属性时,系统可能会崩溃。
有Linux桌面用户在安装了Redhat Enterprise Linux 4.0后,可能会需要关闭SELinux,正确的方法是:
修改/etc/selinux/config文件中的SELINUX="" 为 disabled ,然后重启。