
libstdc++.so.5 :could not read symbols:FIle in wrong format是什么错误?
出错信息是:/usr/lib/libstdc++.so.5:couldnotreadsymbols:FIleinwrongformatcollect2:ldreturne...
出错信息是:/usr/lib/libstdc++.so.5 :could not read symbols:FIle in wrong format
collect2:ld returned 1 exit status
我的环境是64位的rhel5.6和oracle10g,下面是代码
#include <iostream>
#include <stdio.h>
#include <occi.h>
#include<string>
using namespace oracle::occi;
using namespace std;
int main()
{
Environment *env;
Connection *conn;
Statement *stmt;
//连接
string struser("scott");
string strpwd("scott");
string strconn_string("127.0.0.1:1521/orcl");
env = Environment::createEnvironment(Environment::OBJECT);
conn = env->createConnection(struser,strpwd,strconn_string);
if(NULL!=conn)
cout<<"conn success"<<endl;
else
cout<<"conn failed"<<endl;
string strsql("select id,name from test");
stmt = conn->createStatement(strsql);
ResultSet * rset = stmt->executeQuery();
while( rset->next()){
int id = rset->getInt(1);
string strname = rset->getString(2);
cout << "id=" << id << "name=" << strname <<endl;
}
stmt->closeResultSet(rset);
conn->terminateStatement(stmt);
env->terminateConnection(conn);
Environment::terminateEnvironment(env);
return 0;
}
编译的语句为:
g++ -o connclient connclient.cpp -L/usr/lib/oracle/10.2.0.3/client64/lib -I/usr/include/oracle/10.2.0.3/client64 -locci -lclntsh /usr/lib/libstdc++.so.5
这个问题怎么解决呢?在线等待好心人解决 展开
collect2:ld returned 1 exit status
我的环境是64位的rhel5.6和oracle10g,下面是代码
#include <iostream>
#include <stdio.h>
#include <occi.h>
#include<string>
using namespace oracle::occi;
using namespace std;
int main()
{
Environment *env;
Connection *conn;
Statement *stmt;
//连接
string struser("scott");
string strpwd("scott");
string strconn_string("127.0.0.1:1521/orcl");
env = Environment::createEnvironment(Environment::OBJECT);
conn = env->createConnection(struser,strpwd,strconn_string);
if(NULL!=conn)
cout<<"conn success"<<endl;
else
cout<<"conn failed"<<endl;
string strsql("select id,name from test");
stmt = conn->createStatement(strsql);
ResultSet * rset = stmt->executeQuery();
while( rset->next()){
int id = rset->getInt(1);
string strname = rset->getString(2);
cout << "id=" << id << "name=" << strname <<endl;
}
stmt->closeResultSet(rset);
conn->terminateStatement(stmt);
env->terminateConnection(conn);
Environment::terminateEnvironment(env);
return 0;
}
编译的语句为:
g++ -o connclient connclient.cpp -L/usr/lib/oracle/10.2.0.3/client64/lib -I/usr/include/oracle/10.2.0.3/client64 -locci -lclntsh /usr/lib/libstdc++.so.5
这个问题怎么解决呢?在线等待好心人解决 展开
1个回答
展开全部
执行: file /usr/lib/libstdc++.so.5 看看,我想它是32位的,而你是想要编译64位代码,所以出错。你需要指定64位的标准C库。
LDFLAGS="-L/usr/lib64 -L/lib64"
LDFLAGS="-L/usr/lib64 -L/lib64"
追问
你好 ,请问这句 LDFLAGS="-L/usr/lib64 -L/lib64" 放在什么地方呢,加在我那条编译的语句里吗?
追答
这是环境变量的定义。
或者你直接可以 在g++ 编译语句中加上 “-L/usr/lib64 -L/lib64” 当然,你首先要确定你的64位c库的位置。我这里给出的只是一个sample.
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询