启动程序和 libocci.so.11.1: 无法打开共享对象文件: 没有那个文件或目录
Startup program and libocci.so.11.1: cannot open shared object file: No such file or directory
请任何人节省我的时间。我的应用程序是用 C++ 编写的,我试图在 ubuntu linux 中启动时启动,但是当程序尝试启动它时,它会记录如下错误:-
加载共享库时出错:libocci.so.11.1:无法打开共享对象文件:没有这样的文件或目录
我的程序使用 oracle api:-
我的启动服务脚本写在 /etc/init.d/sistartup:-
#!/bin/sh
# chkconfig: 345 99 10
OWNER=aki
case "" in
'start')
su $OWNER -c "/home/aki/sis_script/startsis.sh >> /home/aki/sis_script/sistartup.log 2>&1" &
# touch /var/lock/subsys/sis_engine
;;
esac
写在适当用户上的启动脚本是:-
/home/aki/script/startsis.sh
#!/bin/bash
export TMP=/tmp
export TMPDIR=$TMP
export PATH=/usr/sbin:/usr/local/bin:$PATH
# Start db_test
./home/aki/summ/db_test
我的 C++ 示例 test_db.cpp 应用程序写在下面:-
#include <iostream>
#include <occi.h>
#include <string>
using namespace oracle::occi;
using namespace std;
Environment *env;
Connection *con;
int main(){
string user;
string passwd;
string db;
user ="sis";
passwd = "sis10";
db = "localhost:1521/sisdba";
env = Environment::createEnvironment((Environment::Mode)(Environment::OBJECT|Environment::THREADED_MUTEXED));
con = env->createConnection(user, passwd, db);
while(1){
cout<<"Here i have some business which is related to oracle database "<<endl;
}
return 0;
}
这样编译文件后
g++ -o db_test test_db.cpp -I$ORACLE_HOME/rdbms/public -L$ORACLE_HOME/lib -locci -lclntsh
我看到这个错误:-
加载共享库时出错:libocci.so.11.1:无法打开共享对象文件:没有这样的文件或目录
libocci.so.11.1安装成功了吗?
如果您必须在构建命令行上提供 -L$ORACLE_HOME/lib
,这表明这些库不在系统的任何库路径中,因此不会在运行时自动找到它们。
您可以通过在您的程序 运行 之前设置 LD_LIBRARY_PATH=$ORACLE_HOME/lib
来证实这一理论;然后它应该工作。但是,根据您的要求,这可能只值得临时解决(我假设 $ORACLE_HOME
可用!)。更长期的修复可能是 add this path to /etc/ld.so.conf
,尽管这会影响您系统上的所有可执行文件。
最后,您应该按照库的安装说明进行操作。
请任何人节省我的时间。我的应用程序是用 C++ 编写的,我试图在 ubuntu linux 中启动时启动,但是当程序尝试启动它时,它会记录如下错误:- 加载共享库时出错:libocci.so.11.1:无法打开共享对象文件:没有这样的文件或目录 我的程序使用 oracle api:- 我的启动服务脚本写在 /etc/init.d/sistartup:-
#!/bin/sh
# chkconfig: 345 99 10
OWNER=aki
case "" in
'start')
su $OWNER -c "/home/aki/sis_script/startsis.sh >> /home/aki/sis_script/sistartup.log 2>&1" &
# touch /var/lock/subsys/sis_engine
;;
esac
写在适当用户上的启动脚本是:- /home/aki/script/startsis.sh
#!/bin/bash
export TMP=/tmp
export TMPDIR=$TMP
export PATH=/usr/sbin:/usr/local/bin:$PATH
# Start db_test
./home/aki/summ/db_test
我的 C++ 示例 test_db.cpp 应用程序写在下面:-
#include <iostream>
#include <occi.h>
#include <string>
using namespace oracle::occi;
using namespace std;
Environment *env;
Connection *con;
int main(){
string user;
string passwd;
string db;
user ="sis";
passwd = "sis10";
db = "localhost:1521/sisdba";
env = Environment::createEnvironment((Environment::Mode)(Environment::OBJECT|Environment::THREADED_MUTEXED));
con = env->createConnection(user, passwd, db);
while(1){
cout<<"Here i have some business which is related to oracle database "<<endl;
}
return 0;
}
这样编译文件后
g++ -o db_test test_db.cpp -I$ORACLE_HOME/rdbms/public -L$ORACLE_HOME/lib -locci -lclntsh
我看到这个错误:- 加载共享库时出错:libocci.so.11.1:无法打开共享对象文件:没有这样的文件或目录
libocci.so.11.1安装成功了吗?
如果您必须在构建命令行上提供 -L$ORACLE_HOME/lib
,这表明这些库不在系统的任何库路径中,因此不会在运行时自动找到它们。
您可以通过在您的程序 运行 之前设置 LD_LIBRARY_PATH=$ORACLE_HOME/lib
来证实这一理论;然后它应该工作。但是,根据您的要求,这可能只值得临时解决(我假设 $ORACLE_HOME
可用!)。更长期的修复可能是 add this path to /etc/ld.so.conf
,尽管这会影响您系统上的所有可执行文件。
最后,您应该按照库的安装说明进行操作。