我已经在10.6上成功安装了原生Oracle,并且可以使用'oracle'帐户(即安装该软件的OS用户)成功编译和执行示例Pro * C代码。那是一项有趣的工作。它甚至适用于铿锵声。
但是,在我们的正常开发环境中,源,构建脚本,make文件等由不同的Unix组和用户拥有 - 可以访问一组受限制的Oracle工具(sqlplus,exp,proc等)
尝试使用oracle安装中的sqlplus给出(已知问题)
dyld: Library not loaded: /b/227/sqlplus/lib/libsqlplus.dylib
尽管正确设置了DYLD_LIBRARY_PATH,但这仍然存在。进行过更多调查的人认为,在流程开始之前,图书馆路径的某个部分未被设置。
我放弃了,只是使用了即时客户端。
不幸的是,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 :(得分:1)
我遇到的第一个问题是通过在oracle安装下授予对/ precomp目录和子目录的读访问权来解决问题(然后为我的下一个问题编辑了问题)。
默认情况下,proc编译器会写入源代码文件所在的目录,而不是本地。简单修复 - 按路径指定目标文件名。这成功生成了.c文件。
进行编译是一个允许访问和指定要链接的正确库的情况(即时客户端64位将在这里工作)。
最后,将示例制作成形。