在openSUSE 11.2,我成功編譯,鏈接和運行下面的代碼安裝了一個數據源,一個MySQL數據庫的unixODBC:問題與MySQL驅動程序的unixODBC。在Debian Lenny
#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主確認鏈接錯誤:
libmyodbc3_r-3.51.15.so => not found
雖然我正確安裝了unixODBC和我的主機上的相關MySQL驅動(MyODBC)有關(Debian的Lenny)最簡單的方法(即通過aptitude),我找不到這個共享庫。
我錯誤地認爲,好吧,我將在/usr/lib/odbc/libmyodbc.so上創建一個符號鏈接。無論如何,現在我的程序返回以下消息:
General installer error
因此,我覺得文件libmyodbc3_r-3.51.15.so是真的缺少。
注:Debian的萊尼,unixODBC的版本是2.2.11,而MySQL的版本是5.0.51a
有誰碰到了這樣的情況?任何幫助,將不勝感激。
第三個選項是對二進制文件中的/ usr/lib/odbc路徑進行硬編碼,添加標誌'-Wl,-rpath,/ usr/lib/odbc' – nos 2011-02-28 20:49:23