2010-08-09 66 views
0

我已成功在10.6上安装了本机Oracle,并且可以使用'oracle'成功编译和执行示例Pro * C代码帐户(即与安装该软件的操作系统用户相同)。那真是一件有趣的工作。它甚至可以与clang一起使用。是否有人有Oracle Pro * C使用非Oracle用户帐户在OS X 10.6上工作

但是,在我们的常规开发环境中,源代码,构建脚本,make文件等由不同的Unix组和用户拥有 - 可以访问受限制的Oracle工具集(sqlplus,exp,proc等)。

尝试使用SQLPLUS从Oracle安装给(已知的问题)

dyld: Library not loaded: /b/227/sqlplus/lib/libsqlplus.dylib 

尽管这是DYLD_LIBRARY_PATH绝对正确设置。有人进行了更多的调查,认为在该过程开始之前,图书馆路径的某处已经被解除。

我放弃了,只是用instantclient去代替。

不幸的是,instantclient SDK仅仅是OCCI--它不包含pro * c编译器。

所以我回到试图让'dev'用户能够在oracle bin目录中执行'proc'。我已经解决了一个dylib问题(使用符号链接)以及各种文件权限问题(需要将-r文件授予/ precomp目录层次结构中的文件)。

现在我得到一个核心转储(oracle用户下运行时不会发生)

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

INTERNAL ERROR: Failed assertion [PGE Code=90105] 

Segmentation fault 

有什么建议?有没有人真的成功做到这一点?

+0

啊,当然 - 简单的权限错误(谢谢谷歌) - proc编译器试图在与源代码相同的目录中编写代码,而不是本地代码。良好的防御性编码和错误处理。 又一步 - 现在我只需要让我的链接工作到标准的sqlca等结构。 – JulesLt 2010-08-09 21:53:25

+1

这是否意味着你可以完成任务?如果是这样,请输入自己的答案并接受它。 – 2010-08-09 23:01:30

+0

尚未,但希望很快。它变成'有趣的'(所需的示例make文件等,不在记录在案的地方)。 – JulesLt 2010-08-10 07:08:53

回答

1

我遇到的第一个问题是通过授予对Oracle安装目录下的/ precomp目录和子目录的读访问权来解决的(问题之后被编辑为我的下一个问题)。

默认情况下,proc编译器将写入源代码文件所在的目录,而不是本地目录。简单修复 - 通过路径指定目标文件名。这成功生成了.c文件。

获得这个编译是一个访问和指定正确的库链接(即时客户端64位的将在这里工作)的情况。

最后,破解这个例子。