致命重定位错误 libocci.so.11.1 OCIServerAttach,__1c2N6FL_pv_ 未定义符号
Fatal relocation error libocci.so.11.1 OCIServerAttach, __1c2N6FL_pv_ undefined symbols
我一直在尝试为 naviserver (nsoracle) 编译 oracle 驱动程序。它编译得很好但是当我启动服务器时它在 nsoracle.so.
的模块加载期间抱怨
Error: modload: /usr/local/ns/bin/nsoracle.so: couldn't load file "/usr/local/ns/bin/nsoracle.so": ld.so.1: nsd: fatal: relocation error: file /usr/local/ns/bin/nsoracle.so: symbol OCIServerDetach: referenced symbol not found
Makefile 中的 library/linking 行如下所示:
MODLIBS += -R$(ORACLE_HOME}:${ORACLE_HOME}/lib:$NSHOME/bin:$NSHOME/lib -L$(ORACLE_HOME):$(ORACLE_HOME)/lib:$(NSHOME)/lib -L$(ORACLE_HOME):$(ORACLE_HOME)/lib:$(NSHOME)/lib -locci -lclntsh -lnnz11
ORACLE_HOME 包含 libocci.so.11.1 libclntsh.11.1 libociei.so libnnz11.so lib
事实证明,oracle 使用 SunStudio 使用 illumos(I 运行 OmniOS)或 GNU gcc 发行版中不存在的库来编译它的即时客户端库。
libCrun.so 和 libCstd.so 需要 link instantclient(特别是 libocci.so.11.1)针对 nsoracle 或其他项目。
您可以使用 omnios 的 pkg 安装命令之类的源
pkg install sunstudio12.1
同时检查 here 获取 Sun Studio 的其他选项
我最终使用的对我有用的 gmake 命令:
gmake MODLIBS+="-L/opt/sunstudio12.1/lib/amd64 -L$ORACLE_HOME/lib -L/usr/local/ns/lib -R/opt/sunstudio12.1/lib/amd64 -R$ORACLE_HOME/lib -R/usr/local/ns/lib -lCrun -lCstd -locci -lclntsh -lociei -lnnz11 -lnsthread -lnsdb -lnsd -ltcl8.5"
如果执行 32 位编译,您可以将 /opt/sunstudio12.1/lib/amd64 更改为 /opt/sunstudio12.1/lib。
我一直在尝试为 naviserver (nsoracle) 编译 oracle 驱动程序。它编译得很好但是当我启动服务器时它在 nsoracle.so.
的模块加载期间抱怨 Error: modload: /usr/local/ns/bin/nsoracle.so: couldn't load file "/usr/local/ns/bin/nsoracle.so": ld.so.1: nsd: fatal: relocation error: file /usr/local/ns/bin/nsoracle.so: symbol OCIServerDetach: referenced symbol not found
Makefile 中的 library/linking 行如下所示:
MODLIBS += -R$(ORACLE_HOME}:${ORACLE_HOME}/lib:$NSHOME/bin:$NSHOME/lib -L$(ORACLE_HOME):$(ORACLE_HOME)/lib:$(NSHOME)/lib -L$(ORACLE_HOME):$(ORACLE_HOME)/lib:$(NSHOME)/lib -locci -lclntsh -lnnz11
ORACLE_HOME 包含 libocci.so.11.1 libclntsh.11.1 libociei.so libnnz11.so lib
事实证明,oracle 使用 SunStudio 使用 illumos(I 运行 OmniOS)或 GNU gcc 发行版中不存在的库来编译它的即时客户端库。
libCrun.so 和 libCstd.so 需要 link instantclient(特别是 libocci.so.11.1)针对 nsoracle 或其他项目。
您可以使用 omnios 的 pkg 安装命令之类的源
pkg install sunstudio12.1
同时检查 here 获取 Sun Studio 的其他选项
我最终使用的对我有用的 gmake 命令:
gmake MODLIBS+="-L/opt/sunstudio12.1/lib/amd64 -L$ORACLE_HOME/lib -L/usr/local/ns/lib -R/opt/sunstudio12.1/lib/amd64 -R$ORACLE_HOME/lib -R/usr/local/ns/lib -lCrun -lCstd -locci -lclntsh -lociei -lnnz11 -lnsthread -lnsdb -lnsd -ltcl8.5"
如果执行 32 位编译,您可以将 /opt/sunstudio12.1/lib/amd64 更改为 /opt/sunstudio12.1/lib。