gpt4 book ai didi

mysql - Debian Lenny 上的 unixODBC MySQL 驱动程序出现问题

转载 作者:太空宇宙 更新时间:2023-11-04 04:30:46 24 4
gpt4 key购买 nike

在 OpenSuse 11.2 上,我成功编译、链接并运行了以下代码,该代码使用 unixODBC 为 MySQL 数据库安装了数据源:

#include <iostream>
#include <sql.h>
#include <sqlext.h>
#include <odbcinst.h>

/* Add a data source for the following MySQL db: db=testdb, username=test, password = test. */
void inst()
{
BOOL ret = SQLConfigDataSource(NULL, ODBC_ADD_DSN, "MySQL driver",
"DSN=mysource\0UID=test\0PWD=test\0DATABASE=testdb\0\0");
if (!ret) {
DWORD errCode;
char errBuf[SQL_MAX_MESSAGE_LENGTH];
WORD msgLen;
SQLInstallerError(1, &errCode, errBuf, SQL_MAX_MESSAGE_LENGTH, &msgLen);
std::cerr << errBuf << std::endl;
}
}

int main()
{
inst();
return 0;
}

在 Debian Lenny 上使用相同的代码时,我遇到了问题。首先,我按以下方式编译此代码:

c++ -o main main.cc  -lodbc -lodbcinst -L/usr/lib/odbc -lmyodbc

一切顺利。但是当我尝试运行生成的二进制文件时,出现了链接器错误,实际上可以通过输入 ldd main 来确认该错误:

libmyodbc3_r-3.51.15.so => not found

虽然我以最简单的方式(即通过 aptitude)在我的主机(Debian Lenny)上正确安装了 unixODBC 和关联的 MySQL 驱动程序(myodbc),但我找不到这个共享库。

我错误地认为,好吧,我将在/usr/lib/odbc/libmyodbc.so 上创建一个符号链接(symbolic link)。无论如何,现在我的程序返回以下消息:

General installer error

所以我觉得文件 libmyodbc3_r-3.51.15.so 确实丢失了。

注意:在Debian Lenny上,unixODBC版本为2.2.11,MySQL版本为5.0.51a

有人遇到过这样的情况吗?任何帮助将不胜感激。

最佳答案

选项

-L/usr/lib/odbc

告诉编译器在哪里找到用于链接的库。

但是当您运行可执行文件时,系统不知道在哪里找到该库。

您需要静态链接 libmyodbc,或者告诉系统在哪里可以找到该库。

第一个可以通过更改来完成

-lmyodbc

-static -lmyodbc

第二个可以通过编辑/etc/ld.so.conf(或添加到/etc/ld.so.conf.d)并重新运行 ldconfig 或通过设置 LD_LIBRARY_PATH 环境变量以包含/usr/lib/odbc 来完成

关于mysql - Debian Lenny 上的 unixODBC MySQL 驱动程序出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3316104/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com